<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 5.4.0">
  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/%E8%BF%AA.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/%E8%BF%AA.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">

<link rel="stylesheet" href="/css/main.css">


<link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css">
  <link rel="stylesheet" href="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.css">

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"zhengyidi.github.io","root":"/","scheme":"Pisces","version":"7.8.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":true,"show_result":"flat","style":null},"back2top":{"enable":true,"sidebar":true,"scrollpercent":true},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":true,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"path":"search.xml"};
  </script>

  <meta name="description" content="面向对象的基本概念以及应用">
<meta property="og:type" content="article">
<meta property="og:title" content="03.什么是面向对象">
<meta property="og:url" content="https://zhengyidi.github.io/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/Design%20Pattern/03.%E4%BB%80%E4%B9%88%E6%98%AF%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/index.html">
<meta property="og:site_name" content="Zhengyidi&#96;s 学习记录">
<meta property="og:description" content="面向对象的基本概念以及应用">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2021-04-09T00:00:00.000Z">
<meta property="article:modified_time" content="2021-11-13T14:58:22.494Z">
<meta property="article:author" content="zhengyidi">
<meta property="article:tag" content="设计模式">
<meta name="twitter:card" content="summary">

<link rel="canonical" href="https://zhengyidi.github.io/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/Design%20Pattern/03.%E4%BB%80%E4%B9%88%E6%98%AF%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome : false,
    isPost : true,
    lang   : 'zh-CN'
  };
</script>

  <title>03.什么是面向对象 | Zhengyidi`s 学习记录</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

<link rel="alternate" href="/atom.xml" title="Zhengyidi`s 学习记录" type="application/atom+xml">
</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container use-motion">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/" class="brand" rel="start">
      <span class="logo-line-before"><i></i></span>
      <h1 class="site-title">Zhengyidi`s 学习记录</h1>
      <span class="logo-line-after"><i></i></span>
    </a>
      <p class="site-subtitle" itemprop="description">休对故人思故国，且将新火试新茶。诗酒趁年华。</p>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
        <i class="fa fa-search fa-fw fa-lg"></i>
    </div>
  </div>
</div>




<nav class="site-nav">
  <ul id="menu" class="menu">
        <li class="menu-item menu-item-home">

    <a href="/" rel="section"><i class="fa fa-fw fa-home"></i>首页</a>

  </li>
        <li class="menu-item menu-item-tags">

    <a href="/tags/" rel="section"><i class="fa fa-fw fa-tags"></i>标签</a>

  </li>
        <li class="menu-item menu-item-categories">

    <a href="/categories/" rel="section"><i class="fa fa-fw fa-th"></i>分类</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/archives/" rel="section"><i class="fa fa-fw fa-archive"></i>归档</a>

  </li>
      <li class="menu-item menu-item-search">
        <a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
        </a>
      </li>
  </ul>
</nav>



  <div class="search-pop-overlay">
    <div class="popup search-popup">
        <div class="search-header">
  <span class="search-icon">
    <i class="fa fa-search"></i>
  </span>
  <div class="search-input-container">
    <input autocomplete="off" autocapitalize="off"
           placeholder="搜索..." spellcheck="false"
           type="search" class="search-input">
  </div>
  <span class="popup-btn-close">
    <i class="fa fa-times-circle"></i>
  </span>
</div>
<div id="search-result">
  <div id="no-result">
    <i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>
  </div>
</div>

    </div>
  </div>

</div>
    </header>

    


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content post posts-expand">
            

    
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://zhengyidi.github.io/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/Design%20Pattern/03.%E4%BB%80%E4%B9%88%E6%98%AF%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="zhengyidi">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Zhengyidi`s 学习记录">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          03.什么是面向对象
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2021-04-09 00:00:00" itemprop="dateCreated datePublished" datetime="2021-04-09T00:00:00+00:00">2021-04-09</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2021-11-13 14:58:22" itemprop="dateModified" datetime="2021-11-13T14:58:22+00:00">2021-11-13</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/" itemprop="url" rel="index"><span itemprop="name">设计模式</span></a>
                </span>
            </span>

          
            <div class="post-description">面向对象的基本概念以及应用</div>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
        <div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="Oh, this is an invalid password. Check and try again, please." data-whm="OOPS, these decrypted content may changed, but you can still have a look.">
  <script id="hbeData" type="hbeData" data-hmacdigest="0e24e9556ddb066156b3dbc01050db73ccedea4c193babd4a2b957c5a68e1319">22064b17c03cb0c0e58c99349b6889d0b31470871e725085fde7c8feed9af7efc51eaef8799a90942d54df60a77559fa0ff19966faac827c40b37a714e372b215cd4f3d6c4ae9be31d3bc7944310f18e26bbb93cc5642c2b6dbb8e547aa0e76abdd5ea0b89304bb7d9e5519996f4e8b6d258b23eabba402aff8f54a0c203f5abaa6420507c22054c4e753067015956921dafccdbed16826143280c68adfe17edf40ea9dd94a865e1fc55764d23dbf4ecfce293ad9fe282deee34e1417770fecac298fa84a3599672719840f1e6670c45d4dd889eb858ea9d1b8e67b52209a75be804cc8c71ade72b94673a9e1a7a70d9700a8afe36934a2c7ae5485389ed2c7196a127d41a2edf6d44647e702c3967f225f4bd260b5b555f3682df8128b5d7ed1500317e108240bbdb994313eb88848de68534708030b6fd9b935e02a8d30f253770b89aa19323e9d5828eea1072f1064c1718ac4767b23485c70f1e20bdb97f6afc0b595f75cbdae764081f57a6fb1192a9377205679b831b2e39e27c26df03de39f4b6d30f14c0e8aa476123a736ae07b1e10febe0f7a1c42fe7b65efb173fb1e2469e0226f738f468250df1add378fdbb27a95ccabffcd97aa9592833d4f9af8d21a945edd96b1ba91f171e20ec7ae737710c7c46aea9d413478cb253c4edc878c534addb910663a346d5719d1c5b2bddb6c96f720fad4ab5d7f177a905d6dd977c6328904ce933f6c7e928d3da2ad7dd3dfc7d49f7be5696b28a5082b44cf1dc63704f3b4926f56378c7866dd435ed26ddcda25571c55924cf450d4d1ffd9f2209fd0373e88a9976b0c533443a5fbee1cbfbc1a2bddada50513a7a9e4085d3ac89cc4ca5ebded586cf354660ec12b8f936746afbbfadb3e4aab00c9f9625580cff67f8d135e45cd13937853913e7020bb419106e3b4bcf07eee249accc0b29cbd1f6b9e2b7dde466473f2f2473d6b821c90611727c93444e31a7fa5eed7a3be8534657758ac3aaa7b7c6d56627bbd4a8fe5b6f160a10e13a1833df968d89fef86c9b46922f543204983583e0187619de306b544fa1fcfeee40506bae1eaa676e9a07a21a65aa3590842fe9b4e91d055220727bb26e8c3de8785a334b2261eeba523f55daaeaa2c9b53e930d336b579875e4a98ee820f1359f1cbad67f1de5ab8cb9eac08345d60520b71879aa45ac0898a1eeb43cf15ac1fb0e5cbe9894dfdf762f6b919bf9cb8c91131488015604d4ca3ce03771e4c8fe64ea11727d2175bae051efa692fb98b90677880a8bedc8f93b0b10dedbf5849f50647f47a838bb4f333193b567794a61ef389169d43920639e83c32bc2970777ed16d38f04d4d43f4152c51f964a878b1b59b5c37fca3f680f9f9c59f2cf10b78ae5f3c17c3fd3d100f65ad6945297454c68eff8a6b41a5eee0431cfd7f1c951d1f9e3580bbbafb69da33566f9f4d502debc74c12d18154392018f6d1bd8a557f0faf4cb6facf3a5cfc89cdb0fb47e73c0dc01f47c16c58a8a3cc610924c8cd8cae1c1a7210401c264423bcf6f06fdc6ba447b9c69dace90be9f909368dc7a8ff8578c123a5027c3ec8c304fae16c9bd30ff246510bd960c6bd01008d9b94eff920cb02b7ac2c1b4695caf4c1792625b8c376411547849248005ce6292a10cc80bfef37fd3bdc00091bee516c0c40273231dc5338af58a077bcf4cda57874f0531800e2c53e2f727d64b5cd2682521de3f3aae8fe942fe2830cf9ad1e9b461a4d24a3fc24df18efb1bd8bccfa56e6cd2260b56083171017854adecbb18b4ba820ef594967ac9366e829224ee343e0ab8a7cf72924724517abfc3c2e820de80c95a417f257a34abea5df8b35fba4a4b7e46442a18985a59e1a7a2e253abc7c9f19e11c32d7e0bc462e5839f7e72fc93b91d2ed484b1e26c6f020bac0e8c2d06a08a1918dd3199f654285b08949742d5b15118877b5502f9f9ebcdc0f7217c974f9de5e369eac1bb3c05583ab29afa79ad0a053da526afe8a65b9cac0a8fec6e03f4d55c6261e4e3a6fab36d68a8493497769a0f2de3f6dbf65fa58b0f4447b4b151b829ec0fcf629b09588a285bd9ab521ab2f25734f3d7829485f26128d9df500113a945ab1b1f8886c603c29f2083c91a24e03dce8bb12ecb9ebd07864051f525ffb24aa5741a72c3c9908acc8eecf53545ca132af0ce9079fbc3a91800b47cbccef6c8b441a55baecc5ed8e1189bac116b8aad275d0e7e2d4cfd172772f3dd4c52dada55c7d607d590dd3d72c008813c5e2f91f587eee9d492f6776a40fcb589c7626057dd1eeb97106d54cdc194949bb9d254a64fef97cf5e73bd7f925af83716b630f868300c2fd2c1b7ef5dcbd63181d1cc19a548f384bbae10963c2f8c1908749b957fc242d01db83690e3015b61890344ebb050023deb83a76f09ffc5efb2151b63e09c5570312d6b98466a959bf1505010afc3ee14f125802086bff2b91c304b78478359c01ea1ec160c57eb81b824aa8d076b2b2270599d9a70698d0f483d9b991f5fb0791d93833488f64bf27009283891416be6fdc0d4aaeeadebd95dc75e36b2d9a76b78f5c8e3f878ccbabb2bdf1ba9c8591cf2f714c3d5fe258742c8e474620687576ce291e202986e1f3ca5171059087b4c3607f091fa727967022414590cd904fa9a74ed2c56be9c380e65440b55a1f873ff52e101d028c7ef96e6f0c04d0ac8c1f8a7125958f569142766153fd6ede9f4ede1650280377fed0e1a5a2542cad6d3f3211fd951ac11e3a7d95043235a95d3646d34774c136312db1a6d8378303c8e0f08223aaf8be69f0c25493096e3e33b4de6c2caa9206824787a4568f6c4df9ca763cc17ee0bf10f0b6b79fc97d9871c71db8a33036a8a8513091ac01efc08cb61c76b20d847e8324d2d9237aae02ebadc0256dbb77614d2542bb1e73d779ec2318cd9d3104158000dc8ccb8d7fe06d14236f4fe30a4295039f7fa59d4ded93772ca80d0e2843495fd9770ecc7ef1a6a6a204c41e00c6d67153504e5777d4c06cca1a8a96bd26d140042c5bd3bd6cbbe4dc288896c0b14e5a72b60478dd6a63fc686684a3690ed0c3e1867497b8c6d3d8b256d1c2e017c40fd8bff80eddd3c4e67f56efe25f5bcdc02a06f6bf2048eb091566a9e6af6d941b300ee61c3e3ce67830e4ccf8b3a57ad45113ba34b851ec235b3c6893ead7e7289bc7ff3cd300bbe0e8d070f2445ecd1f53e9ef2af7a4ff0888d5f4d1f8f16221aafc64bd33effb83ca604c1bb291aee3334da32129054782a04f3953329dda4eb8f4a8a2219e4bd6e21c907d4584152786e5c2aab932e05fbe1630859387e8d932a3902abdc213d18351c8a53bdd2c042fba837de0b195ec8eaff5c650ef0294f0afa7f0797d6528ae4cf83875d137663aa6c430b7f15fb3631f23f7986b74ef0317cdde9535261c0e25d68f34a7a13666a9699ce015a5520ef8437154125497e14c898be5606de49641ab1bebcf5bd03d9eec4b68295564412fe75ff6c6b0aae238893cfa80868e8ef6972ed671452e5c1f2aceb734b7de25f1da9390afcb16372386d6aedaf111d0991c8ba5c1a1528c42e2163a80c0c6aa22fb52cd8d82cd4659f733ec6bb5ce5d28c8d64a3d734a8d2f549d4ce1fe63fd1a3dd8364161322d4814d79c25bed1c7036946ad404b875da75e72bfcd16f05eaa4ce00d84393c28880602f9d57d9bf9538d7db2875acb74911cffd9059a0d0ca048851aca4e59e51e2373494a97751d09663543823661a63f1f4c02cb6dc717ce5d82d48ab31d8054d68b053885ec8a357cf18c8f6d54608242616b365782ef74a77996ecaa69bb003410016673d424c484c50d895bbec533bd127cc7c71a114cd9f414695a4ea1200ed7614d89b5378ef71bc812b41a556587126e407c77c84f5f6a048aae0a0dbcfa253d44eb0d94c9107e6d556f4b9874671cceac7c2a8d0496f82535adca800fdf2c5fc8703193c14012625dd32c6b48ca2ec8476ee2c8123ecf9063a270d0cbff5908a8b851dcd1b7e5c192354c15cb1951c9ceff18c4f4b7320b78e9f07d2ede08519d9c611325bfaf4306af9e4b12ca44d0155d875b005a7b97333babaa076576a5e9681474ca290cd9015beb63cf39d93505ccc0566a0bb1a345bafbcca90017aa0f22247093f2aaa875698a848c4ea167f81ca7c3b5e068ddb5cb738f4d8d0b961295f4d8bb315c2753f6b7a53ffe03aaddc996538cd8dc7dcbe11a0acb060c020bf357c6f3a0ac571d73c1eff7ef1c556be689c4cfe9d9f1d96a13c59382c0f3a0063c7be94c6a4773b8da50eabf90a67e9066548febc612de3172bf064beca4819a5bec1a9dc6f29f5ed8552c898837edc829822eacdd4000b8a216a27fde6f25ae159d0657793520289c57d4cb4cca34f79f88156733ecb4da95f80beb5d815616b0c451f76be7e5f047a6797292eae474fbf52ef0943feda26ff1d5369e6409fcdb50c220ea3c18f055672a9d8bbd4d0bb96523edf1f0ec7f7c18973c83bef5943b40d3d3d6244c326157a3029b3e4b90c78c731f9c1cc1e64009d803e56a7873e6820dd95d90d14303706356bcd8f9233f0d206a6adf34ef14895c96ee00925ea6888109a0662c55fa968d7ce43c1caa28ab8f5418bbb6a2326df22cafd4c78a0ce7581d0e08176400ac7aa4659694da38d17d6b8cc0da0307b4cf74d4693eafa7d0d0d8212497e529319dfab61c2aa0f926d692b8681c3df9344261f639b98a5f2b219109ab494160a7a52c10e1484f2ca66121f4333d30c335743dcf16912880ca54be20d10040a31d8884981051532c919ac5a5a0fc7a94f72db8c0ca630aec26e284d089141d4d4d5cbfb55bbf6f6bab2fbf8a888e244533f1058770733eb2dbc8d5e5aefa9f58e3239038fb89bf0ac79560e4066be60546170208aff64b1c1a896bb618e858bf8d52842b2c3fc205d696e49b513dbaee410ae35f00f21321d8357101a9624c8d68b297f0a7a08c335de945b3b2b8df15235786a91ed031ae1668f23af4adf8d9c1aa78fc52e6d23e076e6030f729818a2e009da132abd1b055f8da621f61b492798d0edef1b8a5b8181cc550f9b10f735d2dbbe387e743722206d7a88d59a6cf0ea9dbfa755433bf30e71223e51140e1e5c0d540730235cb69fef53d0bc618577d604e22fa1d4be485353e6c87fcdc5e01cda7cb69f5283e596b7c3446055aac20766e8768abd5db084e334ae55557efe9aeb91a9dbeb0a9409474aed37849d4ec6ac8060a7839501a74cd30d0ec09e559fc6988dcadbc8072a7edc9deefbb9e8968e32a2d3ba8a174b0b86399947ddf5cd14364bd36d613085aa0c9007b3080913ecf10bcc2dc038496cd9acb075e57d3e450f5032363a4c028e7b589fd62309782b6c6de0bf5df4f32605a6d62f457546882ffde37e9417e4ac0e39a9660d72012a41f4963b35446368dc7d81e9bcb5310f593282bcbea58a4f18ac17a264700bdcf1930a51ee0db80e9b497dfd3ebbdda512284db209a75cab7c0696fb2afe003419966d09b1924e966d1c14b6a6be74da9c0cfb5fb3fc5d46a1ef198931a95feed999c74c6df1b713c877cf8f66cfe7633a220ce5603a789c889a6cb47dd77471beda797238ea6b605ac3842f1940c469ea4d3da1c2e0a1535663153d114c7282bc0d3e03fa25f5ccc89470d879637f51568b71bd60c18fb7368e4b4a47738e656677789f6dc0d382f86ff9274b4aaf7faee949820b36c52b1bb0b5683ebdafd60c24500f2572146718bad9e33b851da8af4523f96de9ce7e63748b77184dae42321047394da5a18e605396dfb45e482ed5be0410bafef48e31d52711e9f983c00a3f24f29966934df4e2be5ff8dc7d65e7f2714c6545683d1af8a40cbbe0288de9c6eacc68d9251c78a18ef1bda720d8a35d5025799f345b23f7d0959fa25303b90f68cd7f6aba3c545a49200206c791bc47d12d389cff268daee88593f4c5692cd7c6aee6e83e1a9737a5e2e8a905ba539c8a77a4b9a8da0560a1e1fd195d7db6d90d326ddf575312fe345d26a272c64a19498d0b2b6e4f78e5f804b2174293dd747f20336b2bdd32089b17bd86e18ae446730bc45d3c7ce75d34645003800586fdd75484b34d276d50c8a142babffa1d3c74373a97ee3879a5f5d1beeb1be29370159d7afcea6d72cd1540cb73aae5bdcaaae50c8b6052f802d4d269054290939d05ce39128e31ee659b5994c99b1cc49d6bf0b8e3daeec90e78696d6c870aaf96f4f95a6dd74ed816235783805996361a251e00ee546c59e39471a0c7fe99249dfc909e33d731edf1a69d530da23216b95aa61c5636adf43dca0e9c8b277ed319112e449ce1821ef46e5357089ae0b43268e8122246b040ee7b9a2dd4249183bb6726ce9204944080cd8fde8860368c94e5971e0627d7ae98bedd263e6914fc2afd265e444030a34216eb514603f95d303d464ab50974cce0c4ee8ca2b0c531088fb87ecd2e8959cf0bd2b34d98d7d5e2c1b2b29bcb4dc7bdc72808fef85b893a00838263f366a7784e19d78aa4f46309cbd2a9d41e5df7e0b88fb81235924322e85bd56bbb1d920ddbfbb4436649c58e54a4dbdd16f76670c9115727fba949bd2aa0e7ad28ea4e73b84c180eac8a5e8e908dff49b6bbe8717d7466bd40a630a474a7dddd9494647089fc8bcff1644d14f1f3b4f2559a6dc5c2c89e3d07c0efccf6f7a0cf6a5f7e22afba1de5191c2cebf3710fc3f1ad099375cc6873e7f4dc7dac7f4bc5b696ec3414afa0841cf8687f944934b7f57d743ce08a644c94435439a639f7696623bbc32f0c880116b686dc7692824a26a63bda4532389122129cc3204a96e204f77a9964088ceca8dc8d881c2f7781ae7c6e1a2ca80df699dc683e5529b4051481909bcbb35b954239480a6d40705b8960c993273f56657e995efc21234617c23944f94da3b244079ee04503e2cd4c4fb1abc4e99290779047282ef86a96592f624d37a3921cceb076df599d0f870714bfe0869053e1411ec02480d07b3833dac37d6e791f7077fe73d83df56e1f52f1eaa06db5315adb3d74998c4cb2179884509e2674b504d6f35f1842e49d5783e0f47528ae387293f2546dc3d95f612c873daa81bc9ddda27c6e2af750c0c5e963aac5f646abf242f3841295aa21fec7e548e74798f99ef77248fac94d561b282d0e6fb035bae602422b5e1789f88670070d60bbfc209433dcc24872048f037100ea49b76e17532cc6470570c8f35562b010b53c87bf1b039d374b65d941d8c4dcba94875f71c6c49c0386f8e8dc9ca916735cfb7a5acd8c0044d10421e1cd13cd0af8266b2ccbca244937a0c6f0c4a2c27985b631678727887f4619deee21130e1e57f56e5551ae8b187f4bd58d2150f81a834b42e9cb13c56975c132e87eca467ca6a4a732698f1c32a1419ccbd53f55741bd079861c918aa2bec0bf3e990edd6daa69e88a3d8425a571702f6f2dddd57b96466cd65a28d3f0863549534d9fd5d29af120a7192a10f7ce6ad7214403899400b9dcab2b9be041acf155bc13d5484b18b1e4b43edda366d6ec860a7a59ad1b0631ceb430546dd14cff60dc9e59966b6caf5dfa40c6eb58dd6ab98e73e801459b9c31ab109d19c73255be90e10109475a6a574d3f3bebde42bff210347637c62d3f50b36d1655844ed5784a57acb1e7c507217c61f092936238a4419743e5848a9659d109e0c81a9bb5aa529cbecd091ec0bff31762d89b9f5709127b1ad013d3f0e70d52ada9c6f07f60503917e1a47c7bf06bb2b19925cb36f3fb1e7f5211cf75c280f2d60454f2b323448661f9b5015494877ee745cfb34cb5a43614541821dbaca99ba3c0540199460a155a31bac15b065c65876fda44e3f933f0107c40dbdd4389924e7568178cdd057d53d95ef34a6b24899d00468b9237d9b74f7eeac2c2229fd180a4719209d2a47da158186a54690c90bbe9a3d198b7b17d131f06dd2d2316e37f1ebf81bee1160a1714885446111941b1cb09f86d22017ac5695d75f4860dacd326a8c840e767e7d04af5eb75a657674fe144b821a2b010ab4c9d2d7634f3f2bfff9343e7243b2442d9ec9bdb886e8ab518524b36f366927604e11b6b9cfe1b6fca7dcf6a28870c95113cf9988459302694491394478447da2f3827b630891d5172b2602b907c6fd2c6518b4d478406fe25e415e50d06f4da9add190f947cca54c13c1b2a757cda310c2108039750e40cdd255f8c1ade2ef2af8a9eaae05f09e3e012b2f7ab3cd8606756ccfee2862ea6a597504a403c7e04c70b440b4bc845eb6c0383d8efb2011174d16dae11e541c9fab9bed167c0e0b74647ca28479efe651125ee8752a366543fa4e074f47cab32710047df535d7c322894f2cc84705085c9b4e9ed43d3e5cb10b89928623667346948f5795811abe2a3da9006439d8f1c8f2e74d22ea202b64c633c69a346a242e119cba8c7fdb322370107379f172186379e22d5e01570bce7c65693e0d95d717505fdd05626aa4fc82fde8e027326d616a5b7be99367f80370224aa61205cd9463c59281cd6ece691a1d5dbf7330f28e7ccd05824dbbcd16ec27d8e73ded5b479cea32f72d8ed4d066b0f2372cfa952e5bc9867e946611de0603d9853c7001e0e8ff4014dcf48dddc919843dabd748ad8a2185abd2d8629485633f498d7eefd09c9b8d7412de29df3e898027cf17c76a1722b579a4a15f2292a4392bbda532c37ff8c20ec080a57cc709c79eecd1995eada0523e7e4d74fd9695e7872f62dbcd34d622af75bf0b2181724ff9808c4facab4ce9ac78e2e13bf5d1aaa6fc92c1c25920c332dbc2e9aa17c87aaff42cec87f7c24af2e8d774e6e4b3cb92f554af067ef92cca6dab8915450f8b999b71fb5ec21c9172d39b5306e622268880e321bc328b819b3957238875265c811aa3523fa56c1e0c86f938ec279301bfd1f588ed2de3200af233f2c81e5a23f87bd3eaad45b48634631b4eada20d1441c23c212c30959efa579b6895440c2ba6b7a423bc39526ebe4e9b1d93b6e151c456ab1cacf995cc43e95193b69d372644502565ad44a1833208a1614e1c71acba038d0060d9c18d7c98f063d5117ae1de24e11b1cc2645689f4288089b90aff74988c7f288c6c99b332ea72e619f8271b8d6640187764d704236bc6af8276aafb8eb38d63717f81ee9d46e029591220b79e4c212a061685bf9b5ab45b12069ae8feedf3986e875e7334708264d20e3bfc0bef95d00db79fc6116c2cf40404b482f580e3b2fbb17dc720cd36189b50551fbe66545303c746f574b6d2ee8671f28ad490554562499d89af637b1c9a5929b2b74e2ac5b18a6051a07648c133cbdfa968a2c4c07e8f890a5c36b3c24b8953dc4957c0a8aa2bd9eb85c424558126cb7f06c6622a284e83e10c5f2246a12b981e6550bc39e50b2fe65ef1b5ea069ea2fcc53c24e3de8f0effd0998101b80f27f75f447502c09df308e4c351529069bf07e0ccb79de7cf36f9e2f1fc0d527569e9bc8efe35902681a630de160e23b7addad2cc9f3fc9abcd60993a93e1a10e022a0fd4fd8c955661dda6bb4813cecee06540fb8067a3d4486a79e867ffc00d10958095a765b31d12b4c83e1ce6980dab927ce58f64548cf89dea4248810afb19ff566f49fcbc05d17026b1498d5e11195860787ef724647ed2b8ad213c90dbfe0dafa1dd338630ce18ce918f6b3f6d1e5a33445af285865030c34a65ae7fe5c2116461cdd879fc763cf1647c86b22cb5c09129091b6dae660f4d10aec7b321dacaa5c325f1f12cf0f0c88eadcaed4d8a5579edb951ba1ffa84043311a26b88fcef6a65ac007bc95e79dedc474f72091e6bd0fc054662c3076d9007f8260fc92472c3327da25f5740a38069cba01c8ef29972483738300ed91ccee45123968d29e865f2fb9c24078e6d0145f4714a47217d8d7230a51c32a4b5d96d54f9afcbecb11dcc782a6ad246cf06050ce06976bbacc4432a5443af5953b5d43e7d7e112dfbd5a25d07b339b7377be0fea6bf7c5b857cc18a4eae663b2199ad6a10f90c15f7338eacaadf13c8fde3f5430b197f2a4052ce87452b00691d94774aeb2237b864f5e3a7579c86b8693aa643601aacb4d730690e067c5b9fd2877cd20e747bf86132db79f4a21bc24b4c882f2f312d1f0356cf9cd0ea409c33ac2833a2fe01f75d936ad1d63cd6337956bc2bcab800d96f977f0c7bb4b840a4037304c79cdba5a5650e5db9470112a3f7cd142fd714c34cdce1f9a69d5ffc164fdf377890dba686d944d0a6f5293049e5069d85bbbb27784761e21ca5326372b9c5d9ac985a486da8d3208507cef4a7dea028ed5af7bd1706c5fa1b4a10191bda83cd65d41f935f44a45fc7b664380e69c8c5f62e6ca0616e1a6f1ccf5fa8a810753537dac844d937eebd2a88d5638db3c39e91572808180101f0675cd7015692ef6a9eb81c04d4c421d92468ea72fec93adb810bb3a8c3413bcbd368f9098f6d8babd9fb2073e54b6a8cc9bd8fec21bb75688ae8b0ff893ea44df0ec6cc60ba5dc1513242ce6971480b1315c85140cd31238c361a149db21ba5fb822cdc885fa37037c0712e1f91608793ad6029bd9c8d2a7b89b004fabba9cfea2079ccb8518dbda5e32876e1283cd250480046902ad56966167b3f8598635971784fd6bab8fda16b329ffbcbf4058dd2db6257154cac2d8083e1babff0c85ec3a0d12e981fd2d03c72126936f4a6ea0974d2cc8bfda835796d07cd1860f4ee0fcc2ace4305d92f18d6a5586f2b79a8cb6a232b014c1706ed198a675a914119e407d7811c6b6f031d882ad5bdbc6bdc6b8020ae11312e263d69e4d348cccff954265c9f8b436d7652bd09df3d33fb94449fd3694ab9c802ddc393b9ca2c791f8f592592b4662452ed76ca25e3497745341bd73fe049c75153529b68c3957e35b932ba290b56354b39fa3f059e3c517d0e13b3064bead0f63072e3ccc4985767071fcf45c18f1c9e9e09660d9e914f9eb0cd769cc1b4e9d16c6a49c6a3cbbbfaa02bdf082c3008508812d6176158abdd18af87d5032104fc800c6f43f7cf9600d80db6058fd92a41b0cfbc91edc04efd0c020e530748862ed15fba7f083035f01de538ddb6e74f74a695a7e87d05f7c79fa9f4b2f4a33f266b3e91566fd0f3c65c6fe88ca46f16198ab3c4d9ec436718731515892d6f537e84d754bf2ae4b08f54c182da0135cd5a9be292282785a05505b7396dd2a9ecc23aa7c992285e7fb191fab0006280c0e3f418d3f41aa6cb0d688dcb24c0369ab8bee4456c556341c493e1bff036a62fe332eb28c3b74bbd6536b4a1a5f74ca3aba57bf47c351f0e67f00f3d09b92ec917048031a6ff661487296ec2edebbb3315ee307efb0d457c7fc8dc0e851d41f0e9492f750e216408863dec62c8b8b6e78c775ee737d4eb590fb7c024ffd232678f321cafd83f6d9ff62ebc725fcccb733d86a1b266195a70b718d099bd4b6c9770a607b102af4faf2c4e3445b4630bd34e17617b45a93b4b2c41ba6827cb79cbf2dbe19ae3bffbf6b4e010d81431d3aace27ad2e8d45779123010f794cb04faf00141fdd3c3a19dfbc5beae9f2bbf13358173291410ec7d229885065177e09422470cad87e4802ff83eebf2807216b5a0e5ed555dce86b6593fd0f06b21b203585814c7be66dac3ba201d6e44eb362ac4b89ecba46437582ab6ccbe10ae7d816863c02245ae94a9954f973d0950367a4d610717a3d474b8cbe1f4b5884b16aad492f0468541391c994f08f41ac5e78745d7752ac3e0d203174246c58d7640c90f428bb139ddc7a1facc8f539e0336853b57433421808c4f4a9305a173bf0e179a83b1c6c34e0b7057737b299ce350268afab1c4d1a6079821fcabcf2ff45df5f9d9e91af7cb9150cce566d1fe1e0b8d3b05c8b34880cc9affa71568c522737e37de710cac47e65efcb28f7398227b22612442551feb331286c9997869dc135690ce6766d86c33357053ce0a622ae49f00319a884cebf6268955062f1e62b56d1e42a62ce05022b556bcf272fc1b924193eef9bc860b76ec539a7f31a569b124db1d739f4944c4562a6a2b3beaabc44694f07c4070e82f1c5858d040a3f65058aea26d1b2dadb0cfc875364dc68dbe52b9b2b5840a1af2e2f32aed24ad8ac98381a6274d7d84b11f663c5d461eaa42913f5d5961068c80de44404f7b1df296f8a3f87ee92686ca2012b3659a09df9432daaa2c6bfbb7f47d2a749f9a6ce4c44eb7b738a10a4b1981a1da7a8db2d70a23c8487ef8e5898b6d0c0c421212114454391fa1ed5186e0f9e97918ec3cf5055b56a33c3a039602aed0b5dc53aca0dc1e9d626cf267c77b6291080ee0695681210bd990bcd003e35e61bff4de1da0310459260e600266337aaefd348ca4d410d52d683c291edfbed910ce1db2b5034c4474e42c3f0eb77bf99324725c43799da89fc1d05604c8d03e0936166f040f9e5856c82b124fb723381cd32133b36b9c322175b729b39dbf1696ad4eba610a83c2e9a4515bb1017f445df2b0d165a653ffa7af98df7b87ead51d80af17d47cee81334d5dda74590a6a9216ce60e9e202b840ba09f1d998fb7ad3778dcf3a45cd50c041f783e1b6176a580d10b5657d1f105374dc0fd9cd56b7589f1ca7569f062201923311f89714544661352852e768380857a6e13a081ee839a863add2d2594b406c78f112af2ce3eb3313c193b46c082ba34922ad39c7e73d667601e5e1772fbb1966de38694a4a8895f638e84750a3e1d13df780cefff158e3830942de648bc968472cae8822e6e95863195290a761eed79f4437f8bab947b0196a45a80bc1b54a6f9c218ddb4296d5c7d5d121e081971cc6133d656ba5b2030124e77c363fa30ea9d172f9a0494b00f192153a0f6dd7bb8ce57e045bce491507e3b2b99c962e00c40906c986624889dae5e74ce2e3ff6eadbff5120a1e021d4dda61332a4a2f02b81c7ae547c71bc8a844671bf392c5496d8bf2dc40e71496dc197f631f4d6f779897c2d5a14e685799263069a686fc8e8cda28dc11860f50757b4036cb0589b05b8c33618579cd3d77f5ff4748cf96f66b3e850d04350639f8048a2285ef60e00fc41af122dd9de09f76951c680148a88c538d33a2a7859abc1a7c187f1620e443ed7fc3cde7988b66b7cd73beaa945575dae23a0bdf3f672d1599d3ef04b6534f31bc46954667fa14ce2ba8dd0dfb9c8951bfe0595241a8873278abd504f2e915efab78ab97a75d861f09c2d4192a9e14e4fa0950482fcb143e48e6d82d6692cb7d1d5559e783173d0c52bfa54771c099e38a399c606662c7451414495e854f91710604adc419efe8259d1430ca2a20886f3de7a22ad70f22969d9153a799c042ef63fe58e4899abed6297afb6e33640e30c38af1d7dc758a9ca9b5bcf470274991a6087c4a5282a28c49aaf5a124bee0729d63be900b82492d66fe0ec80cb2b04d2fdae5302aee80857323d675934b8f22563cf8238ee78c75ed97944b206a24c200f33c12e16786c31285bcbdc2f381113200c7a2661c76c146d84f87119d616ef359d65641373038d326ba6a5ff09081af8cbfd2946ce3c8dd0b4a5fbf1004383b6438fb75ae4a60e125c3ba0302a39c1a7dad27c16b71d3161da5ca09346ad2db046deeef5095113603eed0095a38609f1ab759aeee89846d95254f758588a52ee72978df0fa2bc2938772effc307f0d1cf73104f3d52251ed6743b298540315b955a31421457a778d4fb681afe0f005c63da345888315b7036e960940c1a313f9543f8dd780797c19d9101dfed8e5480906bbccce0d128ccabda408eb1598850c305424731d859fb5a7169cc5a58392394df1315f33bfafc08ec7dd9af491d081a0469e01a420cfe7d379c68c8ea56b60f48fc91fb0f3b9e2f3197811776ef29ac1568df36b7581e6e07abe1c43cfcc5efff397b8b6fb7da50c525e2ba803d0551009f9d6dfca627e121966943b099ed03f411a43e37e85ffce821c95dc2da381a0d748636b40760ecfe439bf861873dbfc477121044e7d36d00a4e8697872f7a620b16e757035d378524d8b8c0a29656d0ffa7bd538581d2aba0fdc574538df82661cfd2e17b4bf9d85c6ea2830cbb84b04ddafb856a643abf15f147f0c80d3efc550695021df9b96f0bb8dfea8c3be97691f64bcce036a6d0e6e0600e426d5b04b66ce0b5042dfa816c457270836898486b8b09b1ad1c2e9181bec87b3ccb7a93e8c64950a95a60de620970bd098ccad01a480f55cd85dd35a18ff1891ef217e1550821d29b04331d20c519cfb4527f40b5ccc1d4aebc67482faa227c5138043522e7fe96251e1bb404fca3bd32e149afca11799f4e18cdabbf66be47511bb4949a9d417fc8b77ed28b7f8c43102d405a27c59c5efc0b656375b47c37242d46eaabcbf7b5e71c8e7a9e4b61c5722f4beed8557c9d2a3967efb111238e03ed3107731953d401994bc5f12af5e6b82dee31e6d31a46488a51166febbf5851becd9d1fb63bdd05ec46c74c8c700ac3fdd6dc4cf5d619335ce28d425af3e4fbee6436fb43822cf356aaea01c4cb6f1df8d45943585a6849049a63db76ffccf4cac27ede8e53db8f4bedbe6ab653c979b99b089500e9f42a271cfbd5affd92d6d41b452dc9281b370d46924183803bb5cb4b81a8b961a33e6be585304912e492923ab1b25e123eaa0d28d5284c2aa5d5434f78936943024d99ca07cf5ede4b43c01ac2849c27a9d7cbb4b7f7a7f4d75dbf06120d90fadf85746929f4ae10ef451eff70fa049ca233e5fa1cfe9929fe05195ff916e837b3fdae381ca0f4700ea2959add0a4e985705088c9a64d3edd6de4dd30079c6dde5f08c2060927dfa448ff19a4a06b504b64f8e7098e986211195b3a1d01956e69d7bf5b8c8ec457290c51bd2923aeee0f07ae6b8aa7fb7815e55b16f6d6eacefaf193169d6b4730aeb754ec3c5367442d68c20c8c6b43c743317e016d9625072cd0272727cd59865f8878bc47d516fad09ecb06e839ccf1c39288dbd714def1f3f8ebebcbf74a309d06279cee78a7df53513b2e63a9fa3fee370e1865d4db0fe1bd345265e362fad259bf77d9aaaa1381bf5ed63eaee3d4bff6976a3571aa92ed0bf68c0dd3ce2a5f6d2fb30a637ef38cf20708edbd8d52c95aca35d6a4ee679a21e4b86d93283f39b8b6d306780b7517c29f1b5f7549af054748e43bef16c17741a2b32077790abed3eb5bffc2dcb63660b46023ab810ea7e04b09b6feb34a3b7587a11277847989013be0dc2ce94393ea52096fbadd25e02e8775a91948cc6010bcd7de6bd932792cd60bf56e8d6dc7bc54b4f3a6bb61fde0603b444fdf464d73d6d63b9c2ca4dfbc36cf8d82909d71487ee49a53ea6c9a689dd9d5a051e0140a89e0648e735d5c3d4ccd966cac681dd35fc7e34b639e0049d7b13feffa2f4ad4b4b89bdd0259e909cecaf79465eef5ebe7a6ac73602030c94e0a14ba0737e87acb41fe06723041a56035b34704bc5bfc539fd2ae62d253cacea93e386882d0613404c5906921a19f2ead5026592bd2bb06f36fb16413bf94444ce6e9478e56024aaf3f7686f0d6cb9dad47cffd4d4aeb85ec115a41ab17fd79b1f23ad2f667298f64608108656a34abc34c410fcea77a1b682f03537f303009db8f49f90defb85bfeb3cb4d43c8acabc3cc660a97188b46093d43da06321d993563aacf655b0177b1cdc87090d7cef575a0ff1dd7a8c83520c16ed2e72073498755244d818cb31eb3299d621e39a30a5ee0ab53c14275bedf7522e5e386b2960b66b2e6f83622bf1b229e23f7cad4e405e9692f6e10ca67adf5e394692d9be80e54cd6b38688d3c797cde46f527e6fa64d3fbe46b7737560001ac73bad4aa37c2dac5b1d13a03cd1bafe07bc2028b135752ad9d56ed30ea64a51e135e11982b480f313813837d6efb458a0668a5ac6cce803321e61ba1a2b18c3f877fdc0600b16399af30729fd64b82678c4aca6b26515ce41613f49fc53a716767da8cca6210fb3e36b2e2280314fbf70311bd942b05ce098e5a95c5d918b6dce8f033866211e7d605371614673279cf1ce3485bb28c708b738a01b64ee1b8bad0410d7288262c41da2112eebabc80476d03100935f1c4bdc71115f0645d9771d34b9d3a279306202a4fc48994fd0299d196c7d15af5e6ab95ece265ee92de205ded1c24cc516868dcb13c89b5e8294b4e96e5ab9d21b1a40a2dedd256856f9801b0414cd17dadd4e716cc276b579753737d21630b7e4bafe152db361ff7e637ff06c7fa2de4f1676777543c2f3435166d1217f6d8f0f1339b370d872518ef21606c8e4bd68186e39c1c6cde29e48fe312cccaa026f600f3a8d17dd74e44a12712cbf516112b569fd172b792a72d8c2af5187859a743656fb6b229808e9419331cb907837a351b0863d1204668eccb6a57dfef71fe0f43f5acdf00547e678f3effca4267c50f96f78bd0ea45ef38f73fae0fb62eed91eeade368876706cc9c160be0fdc591d263ac7cf7624873601b722267cc11a06a0372a06f954edd8374152e6dc2799c7e63d38b5e8f523d381ae95e021a5b2a1574ca72cf2c7abd66e07f2d37f91b145f3c2baa0ac4785ad1b56c560d4a2c5125e9b824f3e4906ae0f932583cb3bf61cad1f36dedd9aa046eb4760b9977c953efde70c1608dd46b54545f90085a454624d101940e0dcaf561270c22dd753c8d77210eb0c89f631fe9e1963897931b73de8fbdf0393111551c250c3d884eac52f56ec104a6781d79b92be491f14a33770aa1de2526a562a36d552f5e8be3f72a2522b26c83d653071432058abb25f7a39ba87fccaf61f9c071290414b5797946a3191139d3bec404247759eb11bbab2d36d2c424cc0132368cbf373f17ff4f6a51258b745ed5dc1608ecae2a692bf5bc8867e2c24212b7c6bed681281731f697277c2a049b404926f329003cacddde2208e95dbea13a2f47a9b9d25b1b31363a6dff03d5dde0f0c9db5811d333e361111b9890de2b60afc19c33e3455099f2c3b74bd2106d6f4ec5965c7c666845195f93c4daa436a438ae88ef32fa1ea55ba008a34dd7f394ab0821a75139a7529d540b929d23e12a8bbdbc6122175b0d27d8c2cc574f7e0c138da7ee050cfff434fb3fc33437f5c8e2e66f7083a2209f2bb87e0acf68a2cd3aa34551c6ea368cb832dcdbe2bbe33defe63fd6cd0e276841b3c17971029ce02a5c6443e60f607a34c9a464a453fd3e48099bb9a5668450316adbd54da198f155dcabff8b53128d3c5c6c09eda70262220de825907d842bd56b286e9668d7f3ed1e0a565941ceb25b9c38ac2cf459e41c4bff9547e1790d7f48319d8541e48861c488757d207f9d099136b9f31777970f87844d2662168ffe7c35cffd8090eee89cbcafda7e4d4382c281553c2e7c3127d109968015abcaea100d4d4ccdb1498367a5bf183847d3faaeab48b5276f7e726a378f58e319aa1224033765026b2a775f2571b3f997e034ad4ec9b6b8a3b0cd50b1c79dbb01bda50a04e7e6508b6f7b4e9da4f54bb7ee8c5a2e64f7a3523956039cee26f34af797e9503146c78d4f5d2aaf050030a25c977bdd5a2d274d858c4f6fe11f7550a6b5bbe0f8863b3f2739f32d5ef1afb8721808f7c8e6a0a0b03c06f1b372aa3aa0f7a7bb3a21b2f78a1d29817fcb4e7d0d3aa9b1ea3ce36d9678770f1fb75f1757a3bda6a88cd2cc1713e78cb137d518fd0637f7d5a709d24d35d3eaae4e8d2b6d644e87e2021ac099867f15d3d419ee6b3c7fcf36dc4075791b4559b111c0b247469a81ca7edcf3f2b0c7c2a26878429bbc3c276986d041df373e6bb7073aece90e950119c7478a5e98a5cb9c327c4586b2471cb67124ef36f0765ce9782483db6fe7fa2311f65cfbc1376b549f8e1ca56433036f9a40d80f4651868e4dc12e696f2e24e9c57a3961be9b42b7d94bd44b9361ebe194dc4d6e4d16be47973488319e0bbae614f6aed1e705dda8d56b545a52eaf9e575f83d8e226985901daf166f7a0c46bbf0e702a5035842bcf14878e4ff1586e7eadd37b33234657e9438d224b11a92064ccc0f398fbf23689989ed32668e41ab42c28dcd91e90618b37bd68b84e764f5dceab346111d7568ed879efbc210ba329d6b8ec12bd57fc808d87ecf3e189e1d5338325f0ffa53be1f718765063c7ca52e0a71309fb286e5d7e1a531793b8b3b2c078f8f5341f6077dbdc5d3e2f08c4d3670b47cd13ea4d2e6b98e3b96e4747940a1a52461a6a63e5f6f1a3f4a48969360d2731ce4ce994f2ceff02039fd27af94f201ba55c9e788a5d3e860701af576f07c730a77efc4abfa366d519e92f6c7011981949ffe62a34dee3053eef48b339dfbe5498af77e57ae91dd71cd9d2ae07c0661eba1d016ec8018719955be34f67ed69dc7915eab1c6bb6d3999b4ea8cc9a9ad0fdc9f4ea3165735751a6c34107edd0c7e4e023988a6011d77307a23bbd38ab925e982c3a76b08df0f21f6b037a8c4f05a98c30b7caedf7950bf89b8acf166baebd74ecdd9e311acd3e3f70ab62cc65b130ab732e18ac4952181181ff342b7d510cb4295963ebd1728557119118bc8cb9217803ba85314ad4503ed60bd146fdd84162970b3d53defedc39e02e6f8aa48d40d782c5dcc9dcf4e5e2f2d38105c0f7b2c7f22358d025ef4a2b67d2d4d08fcbbd9e2c47af0c8e418c61fa0340157f4677c249cac43be8e63f6be9aee89db992554f2e51c12f81dd1f52b637ad05b3173f13dd8f0d90b7445e0b0035cdc2e0618f590c0660a914ca5cbb98c63daf792fa883105df5fd339eee7d11c056709a281b9aac855deae915a7db6930e70d40bd25e13aa7512e696a2b5905166ddfbcb6f41d620752d77e330bf295b7f7ad84f232ed2e7deedec79ec0e3339512f1db92e27985bb851aca7820a7d53f66c0fff48963846b3b65660972a808c6cbfdafbe9661a6d729f79f18c77def997bbd2b623985e6d8bc036ebc3fd65c295aefaca3293ba9cf4d6888ef34b0648483b9eac1f557153b84ffc82e517a43085b9b3028c5848e18e3a3c6add6e29cae1f7589fba67d9b03b52970b973c79dee2b0632e868e0a7519f6f4687441b56214eac5eb00ed3bbff0146f026fb9f2c547b5fba3b8424829e50cdee8775be8c759ce8b514908044d82ca40368bda06e74211fd8ae3491fda9da3ef1be98d32e925a5b680eabf277ae60752264a6401ae6205b383614b37f1bd83195acb87cd5d3fd16cf25656ab0545ce527dc8bba8e750ab25dd6b95c6e36835bbc8946c8569fa25ad0316c045b9e6e5df1fb0ecd0c3d034f624b552a1788c4f2caa7454ee083c2b38b07f9f910ae957da40234cce3db032157f9ee1bd48d6efe07125c1ba002768a4a34650db8167c07075f8ffc7c36eb88ed3ac30b15a67782da0b8c5eb6e09262fabb8f416df89e3b36828a8301cf040531bdedf61247589f62f1dbdd8a2b9910ead77b4203e9e692b13d74092c9cfadf49bab1072d4d00cf8e2bd898afff8aa51a5aba67b1c4d3b802d4a5615c259cfda73f0d05f2338991cc6fc02ab1f124aefca3c0d4e68f654aaba400567ad6d7d2e652e9cb9d73de30d7eb5228752a021423f139e5ae893309ef3c3e6e7edf813566fa87d9d799a8773a68fe790cdef669cb23bfb2f7fd6f4aa5f2e894a69c3723acf26f8851eeb9f2210051958d92e1e30bb1156e862e0b4687e501bc32f766f7d18306976c4da0d6e53b398afdf434c1f1d69ed97e3498a4a354212065a04b158ee054e517a204cc932d5a0d5aef24f9ec80c722dbdbc0e0a1d115d1817ed006f831d9a6c491dfc5d65fdb52ad1b984f4d60c9a7b6ac3270f367bf39a7ed6ff32aa3a27d417d2672e9287656b6e38810f1f52873f0d0b59e52e0ad3d38f1ca9b893807c7e974aed05080163bca284df610193b5745a7a83c702ba2f3ef652567197c420ac1ed4875f9d09330340135b590cd46ad1d1753a460b8b9bbe7ee3bc17ac685ee773a63f6fac0fc38da741b5507284eecc58f46591978b5b144450ef3f8f28eebd434553222ecdca6988e222758441af026f9667f33525f0b8bc8ce4c314271f2c5571b736e9b16de2fc4841414fd13f23464a071ca994d8ae371774b5f1b4eb5504b6e1b03d7270ed8cdd50f8d73e544a3ae6bcbf65b5258b5d4891dfb8afdf34434c8e10fc0ac9496790a11ddf1ea0eeaf0197dcd1e5718c6b3a694a4a84bdf1d77365875aa12f12dbadd2ec89b874cfa1a397632efadfdea399c6fd436fe6409c5941a8d31c9e5ffaafc3f828a6c047c3fd575f292a102dc4dc30216b569804c55b4eb370d3e14464ccdfd8d0aaaeadd8f4a16d84685cc58dcb76db562045da23857bcae273c5c634b293d499798f18e0bb3ce98b8104602ad20adc0ab218eb3943e5f0153ecc949ce9fcb3ca8ff3d03488002cf9af2b92c0f6d33c328236defd9a365de1f643ea3b3b5cfa2918dda78621ef63dd45cb587c87b8597a33d3f10cb661d8169bee126112236316069989083263a0aebd2d4133ff165666d3c2989b985c77ad527c1a7abaa9f1e2f5f93a081e359ceb6c059fa8c6639f1dc80648fc8fd28c3e84db5a65e27d90502438d2312242c5ae1003f9868a162ec7120ced80e357f26b7a4f7b30a432c7832daff7db35a4eeb3fc0e129523c771445e0e25e3183c2c1be4868b03a25db32f4c6bc75253976440df9cc3174f92fc2c828d87504c797df7f7afe3c13f05c1eb3fe541a910a5d90f76e914d63be00d2cd43b5c65f42632d22e3fd39ba0605b15c1c246aa957d6a36cddfa671f705101a841ffb597d8cc0a6c607f1755171f9d6df615684393ce4894478c02ec014083cf42feac3982e2b7e08963a27449f5a56cfa71ea7c3807f0031d501fd26ef02bc290c33ef8faaf265a3210c3c32b89ef103e6d0a56e5bf3c6baedd721026492a237bc537e663429764927e105380a556e0d47459521332681dd1ba649b72f9b05dae7fab524a4c2fbf91b4f07d15c709ad16d2b06df7da626166104730f15eaa0dc26913fefd82c2fc4744913862e8ea2bc837c8ca82e8c30a966d7331d8e9c4aef3cf29fb203e75ed16106021b770d86e1100f4cbc6b2c61583227f9479f56c1ddb2c08e1ffa619d4f90d58c9553fe40fb31cce5f4e39c1be19259a2ee98edff81bb0615509db635b8c6168420c450948a34830a9af1f5cf8d7744c3af189f8a01c8cd1072aaeccacf52fe8c946183a9a8b218fcb0fe8836ec9e27241df144180f190751d29452e1af9fada32bf61f2ed0d084106ebda246a6b2477171343fc73ab20f85d902f3bb829733a5cee1b90b49d9910e021d5a1bbfa029bc4009b6fda58e6e7e528dabb13a8fe27b036645adb2501e9176fef27303b77b8995dd4024ee83c0a4bd78c5facadba4ea195d6552e20b185e4179640a4d3639e75752243dd307f4403db77f93ecc4fa58118e13ca386e9c300d6a69855d227444d0b9017d9174c0552c9effc2746820649dba0ca6b4a1c6d544c11c1e376ca469f38ef2dc0deb6b91fcd19bc97e3e11a19923ac2c974db3096d9bacbccb729b07a4cea167c6bb669355a1f2168ca0c492a6b06958ce08e83d8d20442c5e2363c39d96f9bd1252e11085c243d10a9e27658f99047853099e8b27b3b442dc8cdc65b4b48acdff7390272858ac31a571fa22ab61824d309c8232d21f857885c6d7e5064c805a6588c39ca11b1e3736b69f14a42da2fcbd2206d965ba280d93780d9b437b0b3af473d2625b1e4d78e2cfbb98ea6d5a2e37f7b1034e432221aa7f820faf772f36a0746af6cdda36f77c514f096358d55318aad70ef7dc86d015cf9d278e163f78559bd7c3d96c15890da9348a6f7989802c3fb1128740a0501cf10286a24eff2fce52af14d4dd6e0d6095a7fd861cf192aaf69816e9be17f8e0a99d3b6f0a46ed1cdcee02a85b94e4f1720d4c73faacda0faf436c65ca1f63cf94ebe107f98a309f48163098556e56f77f216c92f89fcafb1603e9b5c668628732fb0081f880a38b5fe08d47be022afa78124059f4cd3315df539151647a7d412b2665fe268c0e8e0af214881a7f4d61f1e5b9d498dbf1f8fb6efb5add466cb880693608664ec9e56c4fe3563461f6547b655598f265a32e26289b42f67a8290c59adcec4da2b1cfdde8c7cfbfba999a3c851b2ed5a918d679d98e79498385b23f098d3d0da627202d27cdc8d65d30d0651fca02d71fe24820e360010ce4b2b89224efb780e40bc3baa46c22f430660dbecc0a96deccf5db30b146638aa5eb7d1f941ef0c7fb09d0d4bb43400fd1c55cc9c6edc0bac58f09830e6d5ee27ea997275722bff5fdb9f487fdf700dab0c7f028eda7ae3d7fae98cc003388d4fa80477d93d298ac49db0db4458b437d3bc718e38c5f3a1c5df4a421505f75ce1f39bf1a30b1532d69fe36ad0dd5029f9613912acae96d1390fed58c67645ba11de0da2dab89c3f9272fff9caebc0cb8bac23e47608c24c2733165c87fd4f4d56969fef45252c7b5e8167fe3c6ea002d8ab446d76d61c52aaf9e22cd2fd302ef7d58a1c391b67317337bc07f96e2afffd766e00fd4f1bbe3cc9308a3406e3d9642badcd5fc375b5caa89865422e65bff593209181d135f6e86a58c6768aa11e78d7ff581978f194851ce7a080f29869fae9e4e274f7c746b24680568595b9534d0f7cb38dea14cce872b17e7e82f3d87433e6d21df19806c985adf9074a62da19b6ed3ce22398b8134dfe5f912a810a0a2f1587787a10720338e222b76620685c8531fa1ab87855db0be92296540c30f9d9ec82efc326e13e762bed7f988967d5db99adeb888c628f92543032be24b60b88cb75cc841d3753041065e886ffb5eade4947235bc4975b808d1e7abdb19e752b18054836835b46ec6d542ed7bf9ecbb4d48252b4a43bf3afca4169e0f47ca4f25d97d656355463f6b7adedd36cabbb33e509c5274c2a3fde6424215efd100fb162c16b6f57ca89355fd6c5dcd40b0f3169ede0f22bd2e6d7e13e797d5eb1aa9c09c616723a9455de15f24ad99cd9df6cf7cfe45edf6c749262223dab534abdf9da6dc648342faf25963129258b1510feea44c774e13fcce63dd6cff6328b1d2a05de552607301ab361718ae101a13fdee5117a80269c7a0472f08a59aedbc857209a5ce563fdf1c3d7f756eb29f4fb0104dd1a920491c093601cf9e582b05092081fa0b072ed9de59015accc9a6988f591e1e3f225013c08a06129dfa70d1d50547ec21fde05f7a78c1cb40c6675239cf7d63ad7a43b2ad5b54e2b134196985203c3c7d9259f766a193fb1d2a35d57eb2b6a1eb4902fd4b7006d35f5fc4c2e27357e79630d0801289013e97b9ee309cd1713be3bf9992cfee1c478ca739467c711d76264fc2134afdfb77a2207c586713040df059622875ed56e68173a457e60e694a5ce80079a9ccabd9fcd22f19dab3550749049641a6674b4af8632a34c833515ac6ef819f2d5e5a5a753715c89f5ba6692c85e0c9beaa0de78661d567e61c0856bcda4fc0fc80839f8a5707b10af9d15df24950dcdc8fab18b0ae675d2292d67f0944a8709209baa6e24f684c53cfa5160b9072b8147991f757df2c3a61a8e17a8a03aae9902511a65a291b2e85baff477844491d4ba5dac9eeff8fa981a06206e0faa235f5e090d83ef503bc307a62b488a6e240d0accd7490c5dea9c3f8f993c19125d9033dbeef04f85c46f69242e8ccc755e260f7ec73d82b9b9238e142895d04a7c1c7964f5a03aa31c4c4b59b1103b55f8be46fcbc9a393611167cf7edbe669e5112525f11a7392519648a6d70bf2dfb449c1af12fe222b1eb536dab9d0c330e6198d53e2d513fd1da669bbc25de25adb22ba5b6844ca8479f81352f6d5282ccd622012be5f50e1ab37ddc00dd11d3b462916253b2b5833c3de66841c481649a8210f1d63559b51416b5bc4cbd6361ff0fd3f9ba166677368afb2c25bd67cafcbe55757a2162a7b4a29416117ee20492de8517937ffe75be50a16d17db731aef2d2c4b2581629ac66093454b80241e57d604641950cb59c0b28d3bdfe5f74438daa6ff90a249357b70f15a3c5eea65bf8213e0d382d0fb018f17dd26e916038168b65f28ae775a7bd99133e42ba2fb57d013c19f168f2acfa0025509d866f3d573748e7408833b5712115fcd6745d83ec13a77e0f70d5208bcf3ffd8f46e85277fdf6c872efa27895778d21eca532af2c0d16cfb722629c9ca4b8e7a8a9947bc627485becc21d22c24ea90dc711bd99d18b826086ee8f08d35fe85b1ef88fbbcc5b0cb6f68078cfa0cff7c0cbaf8ffb3e499543183cad1e29c89ae210b36cc68eac39aa1ed7d43c36c88dc89722934c7b830c51e6f27076a7844cf01de030bc12d4295c6b052b68d4dbdec3c601cc65539a0be70abbb3bdd178fc019f85824bef2bf712e6abb2bbd112a5143e2fb2fc45d2db1216c74617f49ff8af3711006501e0f7087b805dd46c3dd611daf589ef0613f581c07b7619e94c0b1c595c962f010443ac795b2e9929231d3525774e048bbabffd846ad82b21a257cb809669012e2bc18cf69f68e9439b33a3a7c27f34bd96fa9622d5556ea6096bdb1290375eec54a74baac8db966ea24afa30bc2a194047f1179a4ff3c513f92eb540d60cf632ee48a1350cdd198945fcbbdd99c3a997cae3a10852e7cb6958d0d8029bb19b4602f57d0a687e99442e1e5c0691ca380a09aa7b8ee5ceadbb320b3f99671f88d1b512daa66e760d9e5d4d83b63884d8ed6d6bea8af12ae7486110cf9f1c6801e5f5a5b97aa6e536b07f6f70199b79412452f271613d3480bbfea762709b0834ff54d356451dae778bd2a7aacfe3e7d8683f43ede5b6aaccd8379cf388ff136d2519901aff404493608e9cb596a9acd15e4264f5b7ade546e839632e4a2bc7acb352d5f304c783a5e9a7804afd9ba2c19fe38ac8d564efe78ba291504bc01396f7b0e7391a2ae8eeda8538b0e3bd1284789b78efd28fff46204f4cb33a0ff32677d7b964a8d966c9b3d542be60d5b20aac6e26d079742e5d267c768792f89f0f863ea6a3393c16a76fbfca7fbb16ba58a2231e2c48fd860987f7bc0cf7937c9d62a8753f9580eb5ec1495db88ff0ef183e0d7e817d59dc0b15f335192a636e9b72f6a81b79a019fa42b34d582140d276b8dd7c75fed0b209b39751f4db720f53c5ff6a1ad258787d88f04a8a85ed8eae9c2559e27d2564410ef4c8814b88d5bdda2ab5d2237bb0529be3c76362afff2eb8819bcd87da5d027ad61d9156e5129d5b9ff89126dcef206fbbd40c2cbe02548f697d61774dc201a7c53f0e1c3b9c888d2b5bb5a80aa1ce00b97ea65f5265e661c8521f32377067b4bdb4bce522270e2c4184d70abaf38259e10a0feb6a22619cd039ebc6d1aa433be94b8bde1eb70ac8af9a2de29689a2b89268dc86aac8b08d9b51f38957ccf8e76b5ed4bb2e0964ef3908bd1e2c72894c4defcf0f881b58a017b4ad3e85eba4af7ffdca6ab6aebe30aa300f3f342611b62ab7f7e71bc21fd20bf1e3c37e0d6fcd8c62ae193364ed0e42f2026bfa9d1b765bfcce7c6d5ad062d030db3cbf0fc5a033af0913889f35a6636be43a4a4557715c8f99ee026aa35217defb24e0cba9653f1fad1a8572bba2eb30181379db0743046f090c7980b8f20affd78704b22f6cc489a37c3cbe907f20faed649a95c0d07928f29df124f225cdcbf005d1e77289019ce69c91d143fa6e6d116062a4dee3beeed1454885cfcfd899f4d5c42144445df0e4b376df10061baae33dd65b802e03f6288c03ace0fc07b4920b1a8139225243b1a79bf5f4e31862ba26d3811500792ba493f10101941264d9372e2af7692c0974e6677d8d16b5442f2af020cdf12cf34b6a8be2863662156ed9616869e6f4c727c092a0e23d2e9dde9cc823386c20a09ec14d7d3f3c219c28e84affbdff1f9e8e90e52818a31afb3c790fefdf13fd47e28456cbc4d4f6a52d680eff6a10ee74f69cd38d2022e75a7a578d3ffe682d2d7ec21a575dda967c9a553abd4e8f96f96645e3f2558ad85be2f070aa3d001479c82dd5ea66f3c4e7c6b0d12021aaeefb3c69e9fe5c910dcd0421be0d8db607962a21e7bf138d61cb045805e67f6ca0cdd95b29032f4b95d391903f05c61e88bfb5c547d1e6181928e2efae971003e538d82999edbc4a3ae329c806d214b5482aea644489e95ca6ece7a4c4715e9a017d5a90c53c595f11452c34da68ad21b999148a24905ecd218b150f62f32467aabe5bf046dbbf895c4a2752216ae43ee8df18f0267218fde3fe66eb7e7c1a8ae10c3bab61e8267e6ff1c24f7cbe3e9226e7785a46e12a1491ba40f7e0d4a00326d9e8ff535fc056031f54132ec7affb8024c2c77af182b9a05c1b188a5eac5ed5cc880e47d23f22b40d1b9e05b7eb0f8ec8f8c1f56b7bcc55001f7596c2bff2572539757065a584cea94a416892f77b7e7344dbba4f2a374d8683440492585602ad18077b007c646f2736751a3cf8d35d8e7097b3aa4c1879fd41f92749607fc81418f2dbceb62c5a2a4d71a628bc09b380df4f10298783324e60f86876f150def30f09c4e6dc8686d11649478e7a411fadbd844b02eef68c9b1095df4f1ae6a2eed7c1a61ff5a64b27e0157243d97db7b7d4d3537aa38f37ff708786f70d4041980236a53bd2da5af1df6cb084f9e93b673216652bcb8f158d4b4c217b393fb283ec649bf28b396a83905650c49a7c11cccc2cd8cc7f7e5892dd6739f9bee401b9640bf45b62d4e2da96e3369bd2f453e16a1fcaeb03e9bf8e01249509150104155d27ca7cbbe63dc078a2172c49f09b6af07971761296bae40fb1ecee6a1649efc61b826733f5f81c616224e0391ada57e32ac1bc2e50b1f1cc6bbf117e554aaf9cf32dbb0f58416479c4c174510722cb7cf51971f4ab2d0368c5e90306c6ec2eb6703b6ffe6e7f3c5548e2e9e97c3011990c057320517c3d41aa6ff332726a06d8921f97fa5724e92a803763c3dfe2fbf57826ce0380526b59299b7f9f9e3a1fa1b024eb2045400bd1deed5e18ca8aeccbc512e71c2afd21a168cbb2ff1453729b8f48d9823145e33f71964d894b7cbf001686c3a0fd5d92ed5d254bd9d1570c02ce3bafb8d36ddcea1fbef7b4d92fd70d1e1aa045e3ee3a55c70fb6c4644720c300728cbb3fd7beba6f4efdee9772f38cc1c5fef9dcdf1a69dc6ade48f02777533dc80df134f51c9420766b330c5c0e034b4a09a8f3a9f5ddc64f99eba2062976c1bc4c42287f69bd2a362415eb071d0c5fe94e658b9641eb81e23b97f4894ffa75c89004e6b07dca8d7118ff092bbc21f7be43fe04499af5f1b69c4f9b5c0aa3c3ce3907c721d1231b999d109d92e34ab48314a882909a6e8fb44923bf7814c92255899f1b3bcc92ee7308b487988a2043a615edbb064ae1f687f3ac758d391227aa9a841582a9dd038d457c200d61befb7059e630247335c0042c2573fec64ab7d31878e2c8954e7bdbcd0f054375d44e6f77a7c6101959f25931277d3bee69bc07145e17d46898bf92f4e0c7cc58f5e1506d1dbb85c8c40b0208cd6fc67a397398bafffb47105cf6969b19cff03807310a18d2c57df5fe90d6caed37aee45812f63c3544d4a58fe6223efd98a4a4ebd3094e5e55aa2e6b5e26e06bce653400df475e8c0f42f638541db00488e99e97ff0dce96cd375c435d4e39e4d8ebe5e244672d11ac7da0c73e23c064cbd2a9408b5e26cac181370b7ab936b4da9091ff65d0f034d7e6f207042382e840020229c71a0d1463c2d0ae81a1b5a4c2f99184358e66a8dd0347420b63e55fcd179a358061b30df53ced2f967ad73e52bc347a5d8ff282b964b1b134ec81046ec6a93eda7d854317d1ee07cde2e2aafb8040018bd97caf4737b497c408dd5245ef76c97408606d8fd33f1bf111b763b0d56170165cf2f13b7440dbbcbdd33ac01abd843eac9da50c16b68299c13c34ab0ae532a47512464c947376ef41947a245e9b05d3fcb899d757c3301c51ddb31c9be75b920925be940f75bfaf903fe41c5353b91e522c5984c83a51eb402259fb94b1c12ff1d12639838722948752283f499c8696345d70dc7bb495317bd06733257c09de4b00f4aa2edcf8ae4a41d5d2c7db99f52abeb4989c3159b5338b0cef9d7f1efc03346c2217b346a46760205718ef80ab747271e21816d8a73eb3b5809ebf501e11832c320cc3ec95d05c95567ffb32aeb07c56654d9cfcfef6a2503549d4a82067503cb367ccdddd07d52230cf348ef10a3e38322dc5a3b9960992811f8dbc07b06bf46fca59534b822beb7eaafee45d287415886e6c1398103eac1ea4b8a2a7240329341d679dff9c2779f8bd3832f9612851ace7d29107ad3f947fb7ca2f8638018143a2e563163d83c84025516a2079e623785255005aa447168daa74bbcd066d19ea15fb92d63a6c749e2417e26977b63b8db7a4eada55d60161692edfa647068d9455d5cf3cc6c775ab6f429da82455fcb1bc5e43e474ae55bc97a7bb024719f13c716d59fb6afa97c55e81586baf24b309252cddc6190a4f3041702edf99419cfedd85575f38fbdf72499d14dd4ceec0ac61d60c78c2f65b0d489374099ebe63757671447befaa68bddeb926872846a7c7ae7fd00d872cd7945467606d0350c3de7f89382e441625f5d43fdf9ec5e4c57b253ad5e091974d034aa5238902cb290c3999bff495f9dd84bf67c3aebca3c972b5b252a8149e9ab382df760ef287155fa82d13fa9e926c4e89b8699f13ef4c1976e0158768628e0f96d68f96c64e65db916ecf1f80b40024b12ebe2a2293c5222519ad34abbac187ea87cab2f01bfe473162f864e301a36e3bccb236641b5aa46dd97de94f9ac7e49635e08e23775669312e0fb817abcd2ba80cdbd9b5b6624e6e184e6df5347ce90a0f357402b01f14505d8c0339c96a56c4c4bf0de554c35cc80315cad0a3cf12f623ae9d3bc59af3cdd84e84d69254d67c3c438e78e3e6f8f5f3ae244bc6cc6f28a688f91ce6c0b89a359082a037fa2020424d8fa89e8bdb65d5cf5768032fdef9bc5cbda97b44fb31fb4246974b2f38deaf5e64baf7f5d902e70a413791c888e3289d605e85d5d24920a32532f61b5a76af74e67e074049e5e2098bc6e33b0fab390ba87319b94a088e17941d91bba94883359b79922031adeb8d1c023fb232ca0e6999d0a819043853d3b3fbe84d86cf0503d1ba27a627f2c22cae5c192cb6dbc3ca2a4875f64d855ca596e67e4f3348cda636ea8370c00b94c2c4d7c2fab11ab4fc8fbe0c11f7b1afe07f3b3ca59e29a8bac2a0f540f3be06e9d2fc3af51e810c86795cd9dc6916f759fae49f45a43a1eb3857730a9e24739ee1e192153522c3718292400ec8e46dbd346c74aab5721dc1dc6a896e586ac3b80b5e4e829afe4d13155e787a7e5c5f243e7aa7dc27ad1a9fef1a6e2063169eb6b403259519079957a447a48447f367908262d4ce6c9d51c119b11b2fc3617df0f23540d3cdee4ef8a6490ef5309af40b14c3c11f7b712b54bc53f9774aa7a77b8531ea3adc1bb946a5aafb5089610eea3afed51ef095552095d42e9c6b80c8d2cda3f1b456cd8e8a2defbecc4414d3de67060776173caf3f4e06f5ff1a56a57f42cc29ba81d55dfbe22e96699f07f5f20ebf4ae8d2718e6d5eb3f6c04677a8c8f2ec2648845cb7939f151b32e718de9a62e3bc1865ec3f03ca266c93a0b0b04f3713bb2221187c2666fc60ea82c1e6d0e284ae7958588901e8f6b25334935c771680ae35ee74addcbc69a6443488252d5341704635e29e5f5ec98528320de730ed695ea65af745a07ebcafcb866b96e230e508c84e1779d3ec6f74779cc61362f2589e73c715ee49d8acd013eb1310c3a68e6c7e150e62f5302674b28338c7a76dbc723efa9eb2ab73965cb70b85b61af8216bca731e422a69d8b17db1b8034ffa93e7bcfa7f8f52d2ddcf58f52d188296bc946102b1be2917565ea9059381f686a9931be23acd07ef1d06b77213ec59efe120e998d9ba0f6caa95546ffcdaacb9847079836e602f465ec0945ac8429309be93b4ee2a2a9b78fbc70399f719c066b20a069863e223213312e8ef8e4481a4eb1322b122e260fcae1883485e08737ce35cf45fe32f8ad15ce987d79b5f2e50729f836dd6f6dae72e93e86a2777f05e113d9da7cf78f8e5eecee0d1857062db349807bbd7059c0d9d54b1c58425dd23744ac1909ac4473ce3e8ebff8b7f644b69ace94c242566fa165eb18c35fb5b2b74a0a45f011939deb47d514c91db63921f651bb8b87612ddb6a109f0f23bb6685e4bb201f5ee87d4d3375812ba0cef187488a313f6a7b3e1d13a770f11ad7193c5fb218198c44f6b131970663d8cfc2de98601e442d622defaaf7169041dbf03c60d37411eb06fae05fb95adc82eac0e19b62c39c22e551b723b96df447fb29bc44c3e35aaf62a01c935bc8088b8a22e9d45bc81dbacc48921c414c706efcab150421ae7781c3f794e5cca0e378039a751e8fe6e1ddfb9674401e37b11a95a2b94a8f29a1361151328115d9b2727146646972391a4319c5ac66e4b0881171af3fda993f414a55b4f54cea90196aaa9c4c34015a6595f6f7e7e81f220aa96fb88a875d89807ef10b64af6da47c165491cc726265e5b8f357871b8b60451ab05c84a277fc8337f25a493426ca96e14b44ad25ebadada620ac00a7f7b9bd5d069389157247cdf7e5142a321c43ad6a8ce43b3b87445fc556d560075926f04ad5aac5c329d2f00899f33e0e84bb47a3597ae7d87be1ca7c090ebbedfb9d9347817e6877e9945df836bc3661a35c4ccb3e5797bd184f503804b2b188fc7dec36d91a3419d1388f7cb2c485327173909629f142e1cc61926c48c8a5b6ed4961eab9d8597dbd56cec12ef247b8ae331aa71aa607330aa4b1cdf5fcc35c32534284d8ae895ccafdeb3fb57a7244126c1ecb4f7808e200691b99a95b31952c32c5525848e4795f54bd4f2c044bbf71fe2042e39a2aa41bb147bbddd1d0f4666afaab23ab69bab561785373e657e73ff46a5488e724c5811ed0ea33ff2d7925b0921182a90d2ef46e52605caeccd53cf02600e730bc0f993d4474282a6aec5dc46fa7e85154769ae74ba08cb945a156218c3898ae4a0fe67f860ca269af1c3448a9e5102ffdedee3b930c4239af494154ba25e4e4f8a5442e0f3f24046a7d057712953e0a3cf09b419f2a487a420a698a08788b7f945415a404ef775cec146d843054f22754da46bd969503febbba23ea87c8cf204b682b60c5d80b37806a53fc0eaa020d7b835e0358c6f2283dba9bb3483362f8bba882e188821b009b60e8dabc7b729ac459abcde7f7cb55c87d0c550330be831217bd8bf223330e8f09de536236bc9dd4c4291c54ed8adb69ecf3d9d541c57f7cdc80c845c13e4db25718033cec5062312779881348594f49e4099158dda931d07e603e1db2379a77f419901b921b854b381bbe1e52eca193805fc3a10c6b66afa0e41d9681425752477fc7640f4e4538c499d7af46089cdb4becf764aabcf408487b316d0d27bdf0d1eea65a03fae6be883535a7abdd6013f0e47bc93a5f74c7fdf67f679465b1eb83f92f2b24dd199260a0ef7bfc8004a3208e763c3220f11f76204e96c95ff5f1ef40c4b83a5c5e2a9f22b333cac784b250088ff9169b37890048f1c95b60c695efa246aef4e00317604a7f3780dc51d9f809fd0041e5e1a27b391a78d48ba6c62170a6df5f06b098e2bd83e678b576db2ec1ae695070b8e0f19cc41468ba2cc32bb22e781153166faf576c58e87a0d9defe2e964ada84c7cb6f80055a241d993a41e7cb5d6a883bd0f77a231cca4726748f09e6f11207e426bba17001e2859af24d152b3507c5d8d7f8cb3b0c4aa18eb2b8809ac966828dbcbd89d653bdf5965b30903d6fd2bb5c0c3257790fd117d649142a6ef7f8ad7dd760a65643c5ed13a56b30b228155266a0c93edaf4ede39cd1b85f65ecfedcd8b24cfd2811ca887e24a2cd7d52895d37e5429baa030966217f209f7fbae78bb85d1ef7943602b72e0805659f0992beb4982d5e8008a340d448376292e054ce4a68f8fd08da7a91a576e40d103cf062f77d826e9aa6a2a3e089756ee1b4aa081027f5868e8c4b6996042c2b396384a54384926a14a4e0cd5e9167236d38de6035216e7389228ee689b0bb8b289a3036c296a7631543a008d87908a288c2de8043f539a35439b99e1f5747fa1b494c36cb82f55a79fc6dedb1228e113aa44bccce8dc73c72794f012e3530737d968e14f32b26b664afc932ae7726c99e691083d4b396896d5f7e9a0a2df7d079dd7d837dec351663d16b5836eca939b7099d876b06a965019d76de4c71438f585e70031f8b9a79b11215103ea181794198a4e31ae9109c867a5b74aae6d9511bc417c4261dc2b2e59568f01db068982e21ba3cd14258f9150df602cd363f4fec042e909082b1af6bec79f35aa4caa873738b9324de5e67e79dc24c0d0f7e885761faa12c9347c8844aa9911c0bbb4f0e0e223e688c5c27905e486861a5da124b6cb95a74476fb132b827f3a123fb52dd169e2654a80b8acbe3976df3412b66a3d520d7b891cb61ec691c332589a0a0872502c253356049bccf8cc98ec560695f9d0a544301e641a20b0142c7a4b0e9f222e30ff446b55ae8e9632e34f7e3044ed57646234b54f846c629a17b862b99977fd2c15a02aac4b4297c7d4af52fb3cb05dc8caf7e1ba995a7e8a284387e6dd82aa5ebb5708ecab1f16f548a674827c7f47a8a1d93dc2f459929ee8cee63f8c3df1542d4c1ff4474113ce877a3a60bd67c691072d2b93f6c685eb90dc32bf60a7a607c925132267d1f0054196cfb1d81de0d90c74798358f37f7707375a234319b96d474f5fba8740553b17d4b80ba878d658a065030335c57cf07b6090c6bb95e1bb39b3818b7f0b0f160e38827843e87b01a7d92f769ccbcd014b7a85710ff0cb8efb603908363a4f037d14afd32e9dccfb816aefcacc2ff284ca1d9ff4d0c806825b79ecdcf9a1cf4bf184cf9f72eca78e47e262bea04647bec5948392019b6feb78ef9ed7fd35daf3fbc73a5719fc1e7b5c6aee7f9a5f3eb240c13df89b1e2494d48712db49f718c9cb47cfa5a8ddce771475905e54a6dab4dbf3175977037e1102f16248766f2d9bb9b5729ee0229321c40ccd5706a2ecbc177897249ae275a3719fbf2f48f854ea6495bab3e6281ee9bf9c7dc6b44be198eddbc334091578f581fbe5312c9735f249b9086dd25618e2fcc419d6dac62d607bea8210a67393539783a5af2abd4ea349325aa4491539efebcf187f375f45aaf8b338f3de49d0386ccdc93fbb41032a905f86bd4dc81e78d66deb3b05e34d759ae588d26d72c8dad58843cdce3557bf9ecc9ccd6425f2348be3bf0deac8d8a41182ef00fb629b69abe5be2fd3bae23614c7430349ef92a0811be7c81ed2b320ab57d9f4d177d17388ccebc012270cf9bfb7037819a818e257957d684248b8fc4aa0a550c8c482b7f11d3b22c0bdcbf42da24838f00c1c92793c5256c59df5eae578823534da747b50899f780400ab091899d32d8fed5a2b5559a0f6e097fa500a6d70cab0cee88da08a4dfac4857380ed328e883a2c08fed9136d8341ea3c670f0f23eabdecc8901147f1d26aa4f9cb03822d2b51337617b6a13c4fdff975a0e44f0d3cffc606d0bd6716f60f62a61bcf145fd967c61f594a3643e575f02db8c759afcf959cca5e6d5fdb2754940e446b940abcbe27f215e36cafbe3bc804a2f1e6e1bfbceddc440d59eb5cc1ee6b68cb6b462b859d81dec2fbf92f20e6ee74929dd1336aee60300002dae2580152c4c993f35c26fe2faa87c942d510a32df2db31d18620cd148a42b2e3ec73695619f372242ee21ff737bd233bba172a3e7d88dc1d4cbd00ca229de35ce90094936a3031391ed8e639bb96f5a4400746371a59a32e9b4deb1e35c5ccfa1ff94314476d5189a4652e8a34d635b6d6892c8a577dcca531e99263b9b69172329c417de229163e56896d49bd5dd432a50692ef533c9040aabc3c64773a03a7dddd8e3c740f3bfc0af863d28aa3645f3bcccd15b5b707d18033550542b82cb0525d88f8863892ba0189d07ba19fc3a887206df927bf0a0c5348cb28f9e1a7eed1324e098c4179cf5a0be8524433f4cbd583ab20125f67508899ce7714cbf931d9fe6a8d0f87b827dd3d83458af692be4cb32c0de88668994f60c9fdba1de43a941041ca4d85083ff8bc1b939f40929b871be3a6a2e47d9517e017ae6ed686a3ade659bc2923bb29bbc10c5ab23e58a957a3fda24fa48b3a60dfa3adb9cbab6628cd09a124da5cf24592232882aa6b99b5077f868018da0d59c79e4995d7dab8f55ef80421bb26cd43ed9217c8f82de5bd1ee0f4dc18745971d89831ed26b481c4e7d74fd1fdade4b16e16399ae63d70b3cacf251f1438c489c499f13c0b7eccf4096f2ca84e73702a5994671621be451e2b41fc2b31948a7f0bc6af90c4014691266a142b1e7eb1b1ed226a57aeb8c96a79289da56fbce7425e8032d84fba5bc33f27ed4943161973767506b9dae540f6e1f9093d82f660a0774f8c9f204f193b5e6e258f7e64ae658facd9d474584fcace29d16f40b0b5e497d270266554b196af21d3fd7f4f8226f87be1804ba1bc516473598b7231c28c5b3f087057505430f239a8edb6fe27d7385632c351ea5ae82e128a876bb4e080e564259c0ff73b24b9ca6d99e65596c8838f76f4b0148028457ec331fd2b3fcf96ff037e8b122eddd07ef1b36603a511c4007cc34a5af28aafdbad241e06e0236fc9d8e319493df5c539e7e01579d280cdd561862948d6d8aeab2d92e9e273b31cb09a65f8f20936897a0c600d3abefc640537143a99ce52a27960c76c73e68dc49910b52ce8f65fa3c5751e95f9e0638a95cc518544100a601e6981f8b4d0d06560c5aad370bc4a18aa435ed671d2b33bda8c3ba08ba335947e82bcaea5b5b4eebe87561c1b25dac03318398cbe659063b20a5fe3d310aaad0cba26b098a5b76ddbc43ba301d27749eae7f56abafffd2f3e3ba416180ff91391c878230b925debdae4e047212ee838bb05665fd9a7169a41ac8097ce40ff08d60f895eb63bfb06e396ad35b10d6933c8da17db8f136dd16d792c2b3703d3e4a47584aff245e69dfe986ee9059ed0bef8c2c1dea7836d6e66fffea5ad112ba5cd9deb2a4a5a36be3f4770033576ac4a61ad496ca9ee2ed73e486126d01b12cb0449eac8ea3506e22564fdfb81233deba154f73bb77c001aa2383ce3ad59bb4c24f3104009202e3bae072b3777d1a9d0b94761a50f5c3443c6a6956d4b0d49c3a55e0a2dfcf8fc1d5fc22e65df09bda052185c8583bd422212e9d0f1273929f28dcd36363368fc01bb36b30c7a14358d7ac1c582d28e9e4331c63c0cf5d87b747aa9c30124060718d2b73df656e3210aa77d61e70dcd61d6b6eaa32c3b21c5e79ccbbc1f436c5e299f7ba826444c3e02952f5864f056a3298decdd483ef0ac2e4b7eeeaa5dfd2d78f8e84a2ff034dceb1444beda08fb8c0752e4458d4d148ee4d98f7e7ebd07c1ec6d4955e93c3d1e499308235c8f1a410bfdbca139a367ecd8255906fad181f4f38fc841c36c29206896050693e9e093f12f89ba54285adebe717509bd014ac1e5ccde22312780e7cb0d8cf2b6f4a511bafb03bb9f0c078eb50647c8fffc3991b790ffd2b8e078d9f969069a1c469712848a977850129999340421de362407906637e2ff3a2b703494de2fe8b1a8eb67a69270ab311c1b75a52c1048a192f99a644239e0b1b6874916cd396a840e5cac3f65741bb29bcaef7e65338ec8d44ffaec78f448722dab36882959e3ec0de8bce08e1763a760c7fcda27d60d8d51f3225109656b25bed3bbe8be2863ccaf79fbf8938320d16ebff09b9d10d9f463450d75547a56b31fdca501fec5e49714e8702f4af9697cd14c1630750a058b4cbc2a06f8ab370ea6d36856f57de84da57a0eb3e23833e277723b181a17f785a1a73ef126f74149cae9c06ddb09ec8136a9b43579acd5559d17bf6be6870d42b49507fdb551c69e988dc1023ba227100ff247ba98605542c14c47ffcd5628c0ca94c0972fe5fa500acb683a3a1be444607344e8de1a4c106e2b294e0f38335248ecfbfa92715014bddb184a68fc77526b1680dd48fddfe07cec965fb0f46260436b9ac27b8e80ab8e7b4afbde5e012f137ae2c4685db54a6fca8fbc65252cb6af4c1d1c94fb36fb80b446d75a2768dd6d342ba7e675858a174b5d953e6be2b0e5d5728e6b397c07d4f26a0e5bb529a15dbf2c37ddbe238bd84ac1185de77ed1ea0f48c84759cec547c69143f86fde5c2cf6ac9debf3e1d9c1ecfb55c23c35c54779f3a4a4ff63fc709bd72b14f454f71663783594b8870615ac93a437650a725fb286526e54508a3642d229441134e3f67c0b9be316694bf63a9bbe7382d071937dd2124da71e905068f2f140eb521f73ea649e3b2420932bd9925296683912e265d5be292992c771f70f1c0fee6c103e4eaa5d7a6b8e59511cc136956e5fbd9fbb4fd558c4e0ca7107d3959a271258c4e0ec239700afa0ddf4a3dc9a5c5072e9c2b66f4bddab0c595b41d249335187bc2c184096bf36ee2ee401d0833cb58693feac872831d481374efe411e9a760a25625f700aaa5d64294712fec1e1b0c027bacf3d08b453c21db768ffd3166d5d5f36107f02d2043185152d575ebc4bcee8600004526ba7d8af864edbf3e3e475811f0197c72b88dc2fe733b27a63d5b8e8f073b9d856cc96e60048312747379c231a285c0c29f2d77fb3730dcd3b2a631d84cbad57ff86816d017d3cb38a40f1a56dcd7655c3231a997a61a9aa8d840640814bbd1918035d6a8d3d91080e7dee1153aba444f3e8788716c4a422210c80be64f7e8d28c191aacba6b3252fdf35eedf4f90fe2ad0738f960022d1ad11c66eed05e2bf87ad7bef168604fed3398ab7415ff76b9829eea83a34a4b1242e22fc469a851e6d5c0539be006f97908572473aa568e1076e4d6b8a98b1f51f1262075dbf20de5d192ff842a43a0c178b0f637ebf1701b9c56c10e35be5df8c2ac484a4e0b29e0ab4f1cfe359e5148d73d3f0a83b74847550435d0cf18c39c3dc72f57ac1805aa65bde338e660780670036ccbebae93edae376e21019a18df9dcefa7684cdc3f9da3c47790c6eec7022501b4c8502b375fe4f794bc61846057d1ffb352e943b1e82f7d397cc0db378b267394873821f70117e6bba0237458b92cde0d5fed96873f568e4fb07f7f31278aea8c030978a8736a4fecc4a04c079534bc3cd4679651a6f1eedc2e31a656c41e4b33d9fa11f024a34d3dc3814b429c48d3998d0f7bb53d0c4b26671b22db3a913c883e6ae8938dab42039ded67e68d18c8c237cfe6f4b4dc87255a71601860432d81bab086043dfdc19923d7c33dff18f923f69eeb0e9b12cf0e30b793f89903403a70af16d4cb423a0face3b5d62f5bc93b5d321f3e1b3b174153ff73cfef01b4ff1050d40b49641badab4cf46443d133a42c91ccfaf4387334ca443f89a5d81a2c5a9f7e78ebc26938149176d61eb68afb0e64c2a1dc25912b512e43a8080f8eba83cab019fca116c7e4491db8421621ddfdce1fa83a0fd6ae40079bb76e8a1405ed93beb332c5959586ae264d01f5978bfcb0a32e95201dc3b83b9e9b4f6b5c1dbae26f0dc6eb4d27a74cc8206fe8041c8d911a032e797838a157f928dba55a0560aa76e83e9d0326fbaf55979053f7d1c4f1c568c974f3c92e5e0bed936d53814eef0c3d1b3f7362d03073482f5c59a15424a358068642a93990d5ba3acdd491b52e6d2fd9e8d8312077f8c439e730239e7bc168388af9a6c825ecd7cd993feb1a7a72ce2329868f5c91bbec594b7b9d629ed72dd6a6b369825e56276f628a74815891338d5bdbf2bb4bf0df07225e351dfa905969b2fa5e6cce118a1a67d72dc8f4a06160fe54f3cfe20034755b0ec3c27322c4014df9cb71ec635b542cf596edad9858c76ea41676b61c0f804434b63d432229df2dcbaa1bfaa04e5cebb3300fba2e45817649aae110d85f9bff99e9f0a4373e5e32146886d1a6373a6190478445fbba1fe157bb94bbbe38fea5175c12f4646aafbbd1c6134c76eb0261af04209e000606a9d21af3bd30fa7a5db60cbbcb04a8acc4bd7703aa33d6dd1f64420b8d9eab9cb0f5bb44aa895043fef204b44268f1758f8f39a00d5ebb8bde9f4921392c8ca5059124a970b81f48e5f7f5236a01cbd193819ed5d75b8b06776e6d727c1b66574ea74c3b0e237c2a9f4703e678b35e593ce94c46903fdd361bb798addbf2c0ad6dd8174acdbebe16c711f3ca612435ee365a4e180020fc7f323031b457594364d5834654a1b99f982326c4bcaa482037b174bc22c8891758807692d050aaf39b833ed27245dc39710bde517ccbdfe41f8d55141b1b1a2598bd042fc3f2de7a6d8329acf8b9f72bbfd9a578036fb455a88af498969a3adea969c87631be21454a1f58d2f03e4598a4ed031566480a6fb659bfcdcb721adfdd48fdb824735b8659b8817222d7060649fe1784238716c0a9b57edce0928bb84ef3556e026922ab720d5401ae7106e26133ebe2406e0914d6e361ad1509e4fb463cb5d618e17081b75380f384b618b846a61cdf9eff209569c62e8b401b12313e6fea657d64dbe8a7060fa3953dc628ad3b841a28ad7fb2b8e137f9f4641e1c92d4c52c528f578edcdd92e3373904538d3bf4bde6b1ce1d16907691c2e0cf681379066ff86b38d60871ff24ab1c3f6d84da29034cc6fc1dd7afe93de026fd4e0d306378adddb51f6165c7c5f1449bc314cbd42c0f56ec89aaeccba08c963084e041b4bc7d93d7cb4ac60a4ec76c1839ee6478b75804fc53d3f5effbd71e2e3e760ef2e085db67f1d7783f131fb7309720aea43762654fe1bde5c243be3b90e9dda95fd67fdf72745c27a6682a31e13ea1d473f7bdafd071a0c55fb763e1311f907919cf458f96b15b2e249bee10085fffa0fde538b0e75813b83ccbf2f6ca003aa38be91e5acf0b663e7a3bc1213dfba600c2d93bd261ec49559fc696811cdd9e0479a61fbb5f796bc8d36145a3c557168ab783ce1d6e57d65c2144e7ff17f679a456f41ceb5a958d71a9f9efe80915a4a8f640d51717c0ce7104fb04e035ec5b7de8d0828c9e39fc3017f8553eda408deb632ac3bf00768bcd2e349cd230b0aa86994a532c8e88dfb8ce72a7b907eecd9f605116fd82628f2afd6c134c9ceec403d4ab11faeed47aa51d4df84eeb61424bbf087a29fa4a3335040b2df37bf8adb4b21a0e3db2ffba4dcd59f17f0ecdd22948b5b941014de257c3a53137bc49566a70b9f39cca1866ea272e11cc7e2e6405a52cadd5129efd016610ef4f7b807c0e6ffb050cdfe0299e5ab810407b3e525371618ecbfa509dbdf7c38fa77c3bc9d8ff2af6f27278caa72f73393f0a7520d7394fde675c5135b5dddd5f32ec2c26b71e0de3821179ba39bccf4462376040cc9a24b858c946dfc5d04eb347c7a320a0d7e2cddda13ea15ec9654c1b3c76b08de5864aab845ebf1df60fa1be78a36cb826dd0ebf040970f7b3af44bf4e1b9dac098d64202365733e980042b4bc494a3bbec88f3e5f72d5b1460ca59a158e4952d57b7966be11008e8656c8e7fb9ac479026af8629c6edc0d978059fac59d8b9c036505e44f94dadaee45629aeb6d44332dd02f7f02da246e15e5e1dc37c3ce4949a5ddc716a3588a6c14bd6cab5d187b4bd13855af92f93c792c674697f782288f08d1610e02f56b982ca3904f4997ec8bb803383bcc15dbb8f87dfd086ff916eade977f27ffd56f600a86cca337aac30868ccc034864946127840e05eb3cdcb02cfacce2091ae275725efff80a7a18c132a5d026cfdaf75009e48fb1dc39e73cff7bd6c41c45fc3d906888bfb53dcc3d26970eccddd082003ee0208eb7a9150b9fd39fd564e35e24cb355ac27b56571bf3eb08e76dcd1f4a143c6dae9558c1cef0e1754df9263fb4641742413f19ec054c1de21c07a7cdd818bc314a6c9b038a61969a341a96feba93e5df1c7da89dad4cffc6f4ce1a727e376eaac3e46f7ab56ee0ff04b82e568c67bbd3fd0a9e7fa0f169c9d1db62af55f07270da27bac86f9efa79ca973044e16ec9840ccb95dec25e1bd5c3f0f739d2334cacf7d46a171204f79035a68332328fd9ed42affb3f6e7afe8995a350400dabda3b541b0ea8962931a80b6316cac5d3f1cd18ccc407dc388c56388bd053d811f9097e233e1137fd6dc893e46ab2609f8e1ddef7fec6dce495e2563e91768099af7fc126393db33d28d2c9cc493327693aad6c19515b51e721fe8fa23390dfe0a03a70b7b25f3f50c4f7dcb72b889e164156dcfa5d67b845d6d318153d39b8c9e181b130d5174f26bb781271c4f1c6e6a73435ad6f50ea30f756fff242806d4f31e80ab281d2aca3f33116408078bdb08ab5fec69f2ef6053ad5e4f0c3b0370ace6f8d9c63464dab881d68a07292de04317fa57a3dffd684c0fbce4d626d04cb35d38ed25724e4eb8f3aec7c77fdbd71e7b9143635a513558a993cb814f60e23f85ba88584ad432484572de4d9bda2266d4c9f7186b4f59a486d4043119929c23fb40b27407514c5dca0cb886cd30cfb10234fc4bd418263f6296898cdfa47966df938766bf4e20f3bc556af97ad5b5452ea23b984d18f04670ea9c626ba63d627786e292387e7722af52091a68c7e301b5442c82da19f3f4bede786fcbdf36e17ee2ab5f81110f9dee3a93e9e013a4c23333511404031c09e15beb0388cd3cb13a05812206374dce17b220bdc08a822f0ae5796920d62bcf3b82fea8050b494975b882e5ac763a6e9adec11160f90ec537fc8b85d0889143c242de946ffa344a5615e8271126b23a2429bd570998ed8e01711ffc4a0da1209c4067de2e757df5fee58882477c9c404bc1d00c0233f7dc1b7530650808da7b85ce7c3514e2ad528c016c007eee6cca1bfedb969fe7e5b3c048adf2f0767144cc30b12c5d612c4446af66e12132112fcd9559106f737cbd6a078f5d58502fa72e626eec1bb3c5327464b91562a692a202842ad305fbf2036a7bf1a2262f4072e75b9bd46646a256a34a464716abcb9036f7248acab9cd48ba19662ae12154a713def4ebfec778f55a906c4a62cae231a6c54ebbd0b38e9682267d7be3b3b4acfc362af6068eb990febe58cd983a280761211872fd8fe09eafef1971ef24ed9afa1f0c7378d472592253ee0a4af352d803e969cf87fd414431c0a0ae8fca23cc351ecc25b7f2ee39c766b06e282c8ddf877680124ce1ad01494497ba546bd339179b214ed135c6e1a5a174ade35b66651eaad5f5599d3735cae3352fc3d1a2b4fb870239ae037112bd7bc6e1a09527cf8f7e9e5db76dcac75bc2177dc2ad078b8613ae4d78658141c5f69649802e849f39bee710f4867c11477d6f3bc6b557603db14e145f33d2babeb6cc77386d518aac7d5d173af3caed0e2a408aacaa4ea4c18e4e133b1445070fe1089dc025c42b5e2893478968838327082afef4962fede80be6c33617ce8143827acd707c3391a2265291d4de39c2e90ab6912493a21b30a8bf3f1eafc5ee438438b3da3a9940cfe39379244f690c8f17775c09c84c35837767548db1318c07d44cf6f9b34a06ee33436adff6b45a0752d0ae45e2a82f9c039a10268496e848d560cf096e4ee2d0a48953caf880b0bc3d851fa80f3eabc34b8c76e05896a69424bd74338f587ff6e2db76459a765325a47fdd905a5eb4aa05beff4d74a688808a93f6f0639229c4b67b4d6b3a4bca7924873c4231a3563a5af1cf0b622ab00154e728ee2b1638c1bd16b1932dd93a44eed0bcdf6c3a590a787c7f2f25f7b51455d8edcc3803f6839bbc8decc37bf35dc16b016219134dbefec2f7d5762640ede762d24b58ff66ba3385643d294abd338e87cb08b64e7bf0c6c9fa7a74007bd6d35f88ec24d5884944af14207acf4d86da559ff6979978ea0d91dc11cd7e3f62d619a13884a48f9cc949dcbef2ff4585ec511395b13ce3df868a282eaf6424709e93480d2fbe6584e877e581d74e400547563362ebb509ee7a5a4fdde2bb81f086cb69666f3c6843a15840fececb70728597ebe27b52ef52979bffd0e0c46b3bd874b2ae16d72d5499e1ae8e42e5911a7c1ae307d329d97ca17342df7f2f1f7bdeb88c44c3421c77a3c31e3b49c98a52e1b859c539e3e54fc9af5bcc2be16aa3efc66514b7c54e30f6d380cb2f4cfa673a731ce930b8ba2910ed943bca045f958ae0f186a5a098d0f7bc2941e5f80dce31808008943c6fbf48d558485caaced95f7391f1666ecdfb753207c759555907e34d517a2df5a9111d959970fbc917dfe659fa7020ae2994520f3d1c5c6b0149fc08c4da72a18143b4927833e47a2a039a1f375c5f7ccef7b1cf85e46f49e483e9cb5f20d8428fe3835902cb3d94f19266860a04d195fdd19f749b6a33eac62fde991c8bc02300dca23512581ab12ea248c2f17e741fee5c44d9e82ba60900605d874c0a9c49fe1033f31ad6250113c085dbf57a1d50404e6a53b88191a750e74c05ef6c16c71f4e25579216e0745b21aed2751f164a18252e846f9f14fc47afe8b8af65de9fde57d13884e03bdafd00f45d2188d85a471160f1c13294a00f8723f3c2e60672b04a0666d53369ccd12d35205b78788677b2fc6a325da9d953de5f3aa2bd2f4b7b3787f06dde96c4d3df883125dca311f5f814bfe6dd901eda537ee2eccc50a6c37feea027e6990b4f67b547d20b4b50116bc8c60255af85cea808c07f1bef591bda385dd50ea90acf0f5a22d37f8e3cdb9aacc7fad7fd8de0a614aeac8c20f533fa4d6e5bfad80d12cc00563245365f691fdc1649b91d00455cd08aa3e697713fd451d4848dbe8814d98871af41725399727ba7ac675b774762f0f487dd6b931eb891278e65d7d34b7640b8b288cb9ddae711d1cd1520d2d55fcd83c06f9e2f542b39b3c076b243e7120f928bfb01375b3c4a69766dcf5031f075ce8fca1471efa7f872511901c2a52826d918d12950690cc9573d2368cbbd4de4ba15b9090ec850c4cd24e7a41584f81672ad65f2aaef9e68fa3d67464bb1bb96acf779d8e682948a8d2a19aee11e43f2fa8f852bd76442c9dc327f995e5d7bf3fd44044fabc9e7822b736fcf7f5d414c22ba8a844a43212af76c6918b31be7aa92fd0755d7042e60af36e1f83389fbfb672743ab59284c6a73dd6ac08cbfdae722ea9c430cbfc9fa905ad0041ae2030aa9e906ba72ed9ae7c5bc50fd19a3cb74aa3e7f2d31dee4e54325533e2aea084b956368b1517c3a29016275c3d21d49b7e03d38d9df7718bb1859a1db0c5b4a6aa89aa043ad4c1d7450ce34f9e420d4fc8b639b883b6b794292096640ece0bfa981811ea5af263f697893ae2e1a2a166402dcba9cfaed3ad711b2f7c529978b9c33394b1223557b6fcd78ebf4aeec8207d111eb3fca268f8791dfc5a8bedb319845d32b87f97e95a0c28e25d7c01485c698eb1b03683a93bfe685c285ba45d8a9d064bb9fda25ed343345874f870e2e625713b044498814c2c69d48fffd7c2bca30bd9ab18a72a16004e3c5f23f1daa71fc70eb2b6d08e8581cf25dd9fb83c0a2d13e65c4a8ad29857e4803ceb1193ee389b9fdee6e08d2ea6eb2d55e367c0f688dad2cdd8da9329c6f4e8778cfca879ad0f97ebacdcec7e3d39c2fb4ca0225f1d25b3896aeefd006eb747d2c4e86870a855333864246dc7d6fbd59c3cbb5ff04adde8b7996697b0cb4e834d657721dd5ec75b0f6ff6c5a45559925756800f31c85e2b343b3f766196b68e7f6398702a8af86ef5b985e175d74fb40aac2e38c78829c3436fbb218974664c2178f23bf73ca19cc97e1c5e18d9aa14e868ac090a87e36129d79928474359f0009cce14feceff147fb48cdc160158c048a13b99a1a6ee85d6f0393347f4c0d064b690b2767958a61a4c56806018ef50d0149133060bfe0a2d945d7e48dbad1f729d171465734da1a90070c83643d33b4eadbfc0b2eb2df0f33c1a804ad9597a4c02a787bfcf0803a84b01d206a61e869e85360faca3faab421adcbdd611e73b54a3e0bf51c9de94502c8a45ae57c584d5bb3a8fa05eaf53e029edf7a8014f1a4cc22cd688596b1ee6e567eaeaa58c6dc7268002a7ad5a2bf32579126e81f534e8166a73718093d74010259bf3c7385b1d884b5afff09f016e1f82394c50327c7a592b2973722118aad1fb7dd01eaa95ffd1aa31ea955fb7632521fff69cdf8de984dc3e607c5f69a5ab7a5de73b121c09a41c423be5d9b31cfffc73fc52d75958df62498758b7f58154f78d7da4bce802d5a66dd3c27b7920ff7a9d61eb7e61fd1630678d1c509a0c3db00d8839f91c4570431e0a21c175e60270ba39b1597fe231e547bae26a995901cab57c7a05cd245587a1d2fda07f266fb66a987c1ca649e7c5165fdf013fb697b1109f3ff462204acf2aa2bf09f03d5ba33962effdda02d5af05cbc84b531ec0d643a9b667bf18e474c7996cd228a292e1b96d6eec58ee986b09f87f43350be343cbacf1f5a5247814f06ed034ece63467232e8b0cb917dc638040f9f56724223617d664bb8c9cfd9aa196d790e1db09e13a94772aaf64c407b0f6bbd5430e14d2ede9b8b50cdbfa94076320f013240648aef51e4e5a77a91a8bddf13475b9cf974f71268055c855d31e9cef84b1ad404cf6732ecd8430caab586cb5456a47ace6a35b9b6bcc2db26825edcf996c60ff92d1c4b404afb11553eb9c50a8220f25b6cf2da0b826b960180f82ecee74804e258b9302b460fa5167c3ef5fe93ce0a17e2869f36c23fff9db777fd959f4c20b8a2124450ab1e2fcdccb4bb49a6f932fdf8f5951edbc1f3d3f198236a13253d85c38d5e0e181004384bf710cc685e52f8c3c4076bb4ea8c017d27db70bdbc4f9959f89fc56722f2ee6cd19f65482148753cc7bf84bec8a9333dbc5de6657f265359ab939be89adaa11ad8166995db97058da52c835838a7cb4e085eb5ab540f3d2463626a207fae45bffe412a6d550a8a95138a03f031c83026d6d96a5b85a667660697d3e052b127c80c2c486311c5372c26f538f65e6edd1f52c2cd461644023eefc562b82c42cc7172f46b386a62986fa729e88bd160d1f9122095ebf9dc66c2ac82ffd7ac970a574ad3699817424ca380794cc9c2dce154423a4d3b5fa6d9a51ebe426e6fe65da4c08d36d1e654fa4e04c6998331215b3663bbf85fb4b321d266e99bbb02b16d47d79a9dde38febd794a5a97c1a11b53d782da1bb9e85cfe0470570f6da9fd4563a82c8ea4b32fede0e4df332c5471124d4acb48dbab201c25be79111ebadd900c99ed8fe1211f748aac623a4e5494efd0647bee90b91f1fee83cd4f5e564d70f473491a00bf52b971ec4360726eecbfe7da33b61933a8de8c2c182a29db8a2377cae3ec09e406947753f1f1efa74f879a38a51735382608d1771939320e1b31e729bef709a9d693ac7b5b9a636357b245470d3170db95be372177b8c9c32e0e01e11b9df2273274050388405ca9349e7c6a8da768469371e3832f497a65c1cef2f231b433f0d8878b1707a48b15d9e71f25965273c821b70719be14305cae9087160645f56df101ac995a61a8d0dd9164fd353a72562bfc31a104798ffdb9b9672264f8369e4b23627bbf91375c8881fdeae9d5957a024617f141018bfb33c09624f62bbe780d63744e12dcf61c2e2756f5339077d911fd00bbd625680a2312ac0cb511fcc40040f7e2fcf6a961ded5fb692bcd0346bf0008ed8a9de12d835dcf04f3239e2e22b27c77b7477a7586c26c1debe9f44a59b2518319db8a303ab7c3893f9b8966fe8e4df521f9afe941a61004024ad5911935e1118ca182205ba69f8eeb1d3f30c0dd94011314d00a99ac48a396da5133ea1f8b1e979504d9265e51c2a05fd39f8c66cd60ffc751eab447d21f4f0673bb1ad84d688a959e57cd25ed7949dce7696af29a2cad25c3967da890ea069ce1537a77a495eb0eda4a1655c8eecbbc9533f1f137b799a431557bfdeafefb9cd0c89e66340394ea4fa412b9139d3cffc5abfbfb72b91827cee2a48dd9a555701ee823fb6c77854f29ee5dfb23c6bc0dfa615d296ed0e15a77106fed9c1fe44732d947f8c7462a4225b5350c398babb3e4c40ec7892b8aad9022ba5ee86ac18a1ccb552c1c7a3dba76dbef56de48c5ff16dd239f48d20d058fd71b2c4bf8c039bf88aadf9f086608a260d2bb766f72e0632edbb823872ada8ba9feb8c678bd607439f02159974b18aa82f9be4f98663d47af1d7b9e39646d9636a8dcbcb39d8a6afc3a94196607016fcf64ef74fc8f894b5ac0cca0123f6208eee8c57493161bc26cf0d3e1a62749a4ff3efff535729c5c0a387406f4b3ea7bc22d5223fd4e19b4f1bed225303b319b3756a217f69013f55d948d0652f11c53acc67b7784bcf394a00bbd218541ccbf1a90b32923166a3aeca546282f4f42de044db47ba9ea741f180b56716a6521992b0c6f8feafe3d17765d5561b27fe37d2741f9e66199e90a5fbff828459e09958c5aaaa90b10e9f0386d9d42a5a407768194e9b6506472bf16ca8fadf889e98144df1cc16a9a96dbf0d2b1c38f1f5daa4b0a490da5a53d67b1d6da7435582da6e85ce1d181fdb71a7e4527b99be90b8897397d2b8cba2f39edd87ca1e3ec918901d5d9fd15828224b4b0c03e0d0183bde0f815c6fe7e8f9d17f5b2c10d6995c9ebe2a1506262f71a8bb577a07beb967ebd465dd2222efe360fe7f06f3989c69bd42e48812c0c7bccc5a79d5ead2ce82ec4c1040b688ff9c677015573a11ba29d922009038e391acb8e883c4ff5345be38cfc44905ff00e11b2260da73a5c158a683efe3d8ba2fd25935f0d99eef65cd3c6b616d27691fd9b3447d5f0d2ef84aa88984256a042bbd907f105d3fadbd663873f9324dd05aa793eab9394377b5cb04c6382cc187402e04c90daba9a6d7ca62893385df7a6a94fab27e656cfdcbb40d2a1c1b299f16e27b2154981f0f250ea052dbe5ddacf2faa7679bc94218a6099b1d414665717522cdafc601c6d40ae6368396437be1b37c57d44286ddfbacfb03e7b0235519a9685a437c9b266b894f267f9fa161c57653efbc80f760d6d805a7b13ec5a3f816580efad1ed391f53c0b681fa6ba5b0b51d5025671d22c86d3390092584d66054a4b4fddd6956e5fbac6c405be991f003b4c6b0732cabdadc0dfba2becbfc61d30a0069a578222487eb205ee7afd7ace3de18e6add0ac801d16056fe003f7d410a4f896bc6886ab2e19d8e475ce973659c3071627da8412451197e70cd658b46f160ecb9a43098349d52635e4e4c2124f757313961167b94b7770339ddf6acb9b905f196cddf1e757bacd449625ca4f9c764a38e808166f27ca2cf97e8921283667ebc8773856c073dce895e60470ed09b83a88e07ab7af7945668b2b953ce46caa39c3d6a7c113dbd280d8daa8f93339f226f571433c2748ad9343e6cd3b5a36a851c1cac0209985bdbdfe3bc0d27b1da0934c0e00c11ca51a4574defd7b39fca522b6defdd9b631f17b676effeddcf7da86b44729cc99c4357e1d36a51cfcf08a6bd44f37fe7c2825c766c5c2ad54edb23163098c7ccd413bb8abe1c6aabe6c4be6ba242317ca097f2addd3c87fefa0e7c3f9b8ba58ab14418beff1c5a74f08948081e4f9000cb0bbe42bcdff2128d92967cc8914ef46ad573c2d4518b1dec04ca449c298769ccbe4e630c6584776b691fab635767cb988e6e7390a6f296cbdd969674356f59c05554d9ee8c368f80622590d1c058c871f545139a08410e926f632480485941769104c598c1f1c7d73b91a0e1a1333ae1319271594aac30f22dc0c2170044c3cbd105d732188fecd91fc04bc944ca5fca69a67e3bd8000284f4918fa27a0140a8916691c88d1884f85bc621ba199a901eeae6422e2254c058a285cd069de9ed7788eb545b4c8ce408b7fa37d8c67e0ea0459e9ec4973241510ce230d8ffb60d0a77c7699d2fb8b550b13d8113bd9a71bc7c6dcafa50f80b9678944488ee87e2b608f67e329d661765ca812dfff879035bfce2d4c90ca7a1d8513ea4e4a0b68c5c18ff5908f063bc6c32efc7e5c0dff09626e60e9de34bb62af2eb30579a65c8bdf11437b95db12e8273fe5dd063db7235d0325db2cb4eff76cf5f4934b71c06df9a2f7ec151fa63143233b6a8e13bb246c08b0287d2427191119fd75b026784ee6cb809c12dd5dfe8de43f67cbcc9340a98ab0916f540f4ebc6db797e98ef823fd3d4f4e811a825b028f1591b4875f35f05f32126a5b6a9805d670403237ba194f9ef9af044e6507b419af854f436635debb463c99877d6e18da32e979b29c4c54d62400815f168d64f9304dac3352f7925e118b4de81bbd434e4580cdd2285af0310a09d4f2df90ce4b25eb5f0649796d1b919de8b69cf48e7a1f8f30ed223a1f748661aafaa3e3e568256157543a38858e7d3bade8f7eb8abcc4e6e49d6062a1ee9a519d01a07cb298c1e4b85e300a180617c055eaf143f88c96010d569db295648352f1c2b831dc1b193268cb0d63b16e88dabbdde42d4fc0b4d5fda5c3adca4b0af46015c95aa189595cbac8ef0b14853475d44cc59772b8467288eacdbf16bc9cc0fb68312754771737f8987465da890be707cb3bbcc75ccebc8bd52741bdafd4f4dad0699a9aa7e452b59792ec9697c07c988fde3ee4db8c65562391c8c182941cca5b22ba6fe8a718f860038459cc1ec0eb987bc884bebdff49bc9288bdfeace58a1402b2f87b6136435bc97cee78c70d3a075228029d5f138c3bf5980cee7978543faa64daa22dd6b405497de4e081d3021b8bc00dd21593e86d840cfb8a508638da4136e5693b276aaab612135eb17a7a4e3f349b57364b7bc969fe0b0134d5dbe2597745f23c35f2bab54145289b2f4e59cd9e48e7d9052c0d390671fbcc60ca52eb9786e364082c777e12ce998c0fda8bec62c1cba1489773d7641fba0ebd566cd61712d8e712c4c3071254692998f9a6c93583ca56f9f1884ee800503fe0bf56dcaa65e107a1c9c20bf17a31873075b35913af7007d4817ba6f164b09946c6ed1f37ae9258629795aca61e183e6ba5ab76c0c1889f4db7c0d8c2ca64ed20d7e4f59a3c2c28757732beee3eeb9b8cdaf26cbed8e9740a428d13521fb93940510e3356ccc442444beec75f0ee6b08a0a0617aee2aa25e9c1b3502e73f16cf088b0e4e2b5e60f146db2eb015de671833a166512bccefe644dcc48cf93dc48c96c43d245684fe6cbc34adcd703531c8dc7e85353e578e505e83ddae025fcc22cd6360f73857588562f21a6789267b922b613b5ef6d7df283cf70db3bf17495fb317b47ac048f26f53d76832106791a49fac56c9688745e182d877f3a58098802269d1d811779a4f584f8e990282c8e723601ed7529215f137a53d5b4d0e86c8706b84c0b141196d9ad44d6684bcdaec21474ab3fe1834d45921cd4c7888d784fc87bbc7a2f03cd2ad499a260ce6ed97632685ce6c122122a19108f3fa10dfbdc3ba3d268d73b9bfb79111c43e2889bf2a6a80446b83ded0cb0c11d2c80b4cf68687299da7ca8e3e949184933e9f24e2ec85dec13159637faababf7c545545d26eb980d8d732501d18dc08d7f5b4208c5a860bb2c99bf473667d4980d0092ee9fbc635afd22cd7b91762aaad82bd137583f316fd3a7190826e1e61a852a5734086a67e65a882edb95bc878c9a2e8f445f1244938b7e995d7fdb54b91e980b94392c22711b0b6706d1708854274445bd8f263742e273e7f82b786452005b17a93aebb39fbb06352a49f96db9a5c09fa54b5de7c6e917453d5b567a15c1ca7ca737528e7bb7309e45377ad55a5ad4bb8aaa383cf552b3c5ba95d522a33013d6ebbcc28a1429881015c729b6b2fd2ac3be5de758bd932243e8262504ae958e55a9affc066e0424667f007215fbcdeb9025df9bd60792c80bd35eea0ea2f0a61c0eb882be9f896ad334d5f37b29f59c41eae9863bba6f72891a907b1476bbdfabd7783e7d763841279a2c69d2a66620dcd3b2dc4d04b446df2cb12bb72a4a75702c16cb5c92d21fca96922d36c219c4692f98aadbf51fd3cda9288fc0014edd8a43db92330a7ec9a348228bedea18813ed88eaadd63f272d05b3c27732a3f95063da2a3edfe8d7681568915c2fd488e7dd6f465437d21e9b13975fa6c768a5af6f747776178eaf43167317e61c2baf50812c09f110f4f4b688f6ce977921e09834050fa488bca772444a7ac7cad10353a8e7677f9e338e0bc202893789ba54c57a399cf3082c17b6c9984cd315afa3580a7377660be6caaf90c3aa0bc2b6ee920f1f3eb2370b46ca8281e27b5e30ca1a6aeb404e44746b41f227b4b72d7e59f4b632e3097c38a4487a820b8bd169f0e6d15ee2e290bb02ce6a43606321fc9608238bfd7f9f57773b567ec1f74c544c425ad7b115f09a4dc8992899e7459b83e0f42397dde2090e98ea0d5424f96a66a7856916b24aa58c0813c3e77e86267282fd507628f8a91732e62beaebc5c5ad1c4c6114988862aa70bfded521e4dd35ee21f908cd03ee821b6fd14588f18533af43a8d5c74670e8be76191c3b7f81303cbf99fc7bec77705c366f90418a40fd9f9ec5f09d3e259f98b67a91ca4ff1950f10f7ab2adc5f896be50bfce15f128bb9166cd052ff0c7ea95ef162bf0d0933868c94704b2b96233e9c2ad80db7d793be9195d1b3824ea63d7ac769aadf060f2ead970c35a0e260c1c6fd29d24f408180df67dc87c9780bf2d08c66eaf22713c0a7dd92928f987797a27754cb4aee49a4255d7e6b9c5e7f1ff918dd90633df4a2772c17e2fb104e44102cdd0877f57ffc5cce5b93067fe8f97c6bafbb0903481a04280f538cca3220a39c2bc1674980feb2a0625ff62536d8a516a705af4aa623f9da8373ee3373fe9ed35a649c0648d84e0254f52691e23e8e4005abb387a77b594bbfb3ead6b8c2b52758214ac6c13c4a6535cfabfa2bf39b5b30b9f68a90402c95a2eb700de4c0acf3d2fe6b9cf904c9c1cee8974211048cb8e11500d6dcd4d456b8088302d22e6aaa5bdfa5b8ead8cfc57c5e14e7e5e86a7d3b372b23f42d0cabdbb9d979d2924464cbd667204eda869a7de009edee2b94a279cd039bb78e195645396853b35ce63b0d7df3171d3763797cbe8ea1962f9b10af4b585e67fef69f9516b7751646b682da54282d1e4901669a3ffda1303cd30dc6dc49c741a4fa2d5a66cc53741e6882cd2a84e3ad75b8bb8c791dc12d3ce49def6f9fea0c1516af7820c5c81bba73e69dc952fb4ada35ed114b97d2bb43b27f0fc3f978325ba643c97811a07e527802a3597c3e8cbe5091da9abd8645a37a99f4fbeb93814b74c0267b874f515f53455ffaa07e160693fdbea55b8c6673c0153f83783156569e4f94e66d9612cfa2db392c3e1dce38b4271770d1b3825359c0e8cff0ab39287b1bb1341e907a08abe890cca1769f44ec81613849bd72dd79868886c4871959170086b389c9e68832d9e3269541e37afcd9466310d290de94df57a5b24756a48ffdd461be0912363ee435c5d3f03c3b8a35be2c4650b8b5b84e451684f952d924d0073e81875c5c41e17fc1d81bf9b594d85690bbb6970092f9b19c34115e5e9f8f091d5e5878a8415e135918a69c872dafc0b75c92a33b9b2dcb2349692004cc135ce42533d063d7e014bf8689d8d3ccd52f309f2decfc12395125892d2fa7c49834c9c982edc1f502422641f7dc7541dea2f5c7f1c940192ab7e45012e699f09457bb0f7b169dc6a6d50a61d9de0ca9b485695ae5530bcc2e979170f1a2e6b5273ebc871be9e5842fb641f35849e7369f7325c1e4781a4afc39b677a0cb7aa7e696f38e7393f3feb1d227dd66afb5657ed4e350aa41d6242f31a3ec1a9fb36e4f370c64450ba9e87e4f2849582d81e6533f998e649b979df8e8a6535c5564d038dd91ae86c4a7000ecdda0ec0ef796b2a6759b32b309b537a9a1e3d48c93049328d2427df274a2f49306cf555d03dd624169f0c1a6f4e2b7db8a23f46fab4d4c5b450ce93a5b7ba357fb6b39c564d813c0f5cb6391ceaa9d74a864373511345dcce61c4e6e8bfdcf3f2d69026dc2412c65bfb851ae93297ce859839f77505576890315c21d3a776e7f21d48190a5306fdea6323dc0340ad14f763f6122e23ea66a878a061c4fa7ec93e69943f97eb4b90625745fa1bf41e93d68df49162973ddbcb8a90421927f272dda69ae84ab7d51a024887179d737c079782f08503901540d3904ccd33e4812e7b528d56aca2e3f6c3afd61a47ef08780e2877b7c5479cda68e6e175c4a22bbc208aad18d40c724d9036ac5e2a43aac0deaf8e0fe373209b314cd09bfc2b91c14327ddf18355d787441683cfab0398c50c32a2a0f82ce15482da55a58e6fb041aa3fd6433ab4d94a023a6a3476b98371290544b12097d5790c80e58c69438bd9d73eda09a31a219c10a9cfc7c27a1b7c9b0ae16e0ac44d191193de4f2f5a0b13dd11b09fca43f268c4f43c95924a825c3c79598b6612944d90506068b632488808015faee0fc17be788e1f7e73c47398f084efc273ca9d5b082df94093f828a1be6e9fc00079c3f8510d647a64b8a5d81e5d5c19b9d5b8af416104f3e59df3b77082993d15a0de11c9ac6303ac7ad62d4028361561a72848633652058e95803d175c97733c4a65cfbd119f656dcdd8ecf9a3938d7ffeb028ea5484c6542845ecfa1b33f27cc203c52f6e363473bb00d1b5d6af2ac834fefe9773f76e91ec448d215af88fd4076ddb8eead3ea287abdd3a6078f67f2c45cf940a06cc4957f80140e3da7ea5436b0854a2d7c97e6e2a581c5e0481969619f23c5025205db82000fc00e196bb19e408fadb085e79cffbb7c602e98cfb4129857f1092ff45d5077e25549b1749f2e4b9dc99d3040e04728ad683690346c6c2601db41ab93b1278625e669f3e45a484a4242ec9282552278b66e9462dcd425dae447d707f1974ded10741beff9de7dbf7ebf71ec88bebc1a441a24a28b21c49ccda5d5d5669a3cbe45ab990a2a92fbacc153aef38ef505821ec75620393faf1d947f7a8875350d6444657577f892d5c3cf167fd9366c7a35e35064e1b328228823d908535f71722bb5eee56fca3facbde174a78d2ccbf32aa393b29fc1b113197bcba1400669fde741f55eda2ee24da927cea7a12a87e72620b04f32f5292d8d6cf4c980bc5470a6e1568853a15321844361595744426c27b4da23e4380cd32d1bb6b8ab8c4bc2f611d07b03fa385e7f1896e7a108d58962bfd40d06d24725f51f8e62991ae725e37eb61d66eb8b2b78743b1f590925f20df87f99bfa58ecb5cfe1a761356216a6d3e2dea3e3b12437bc4865a3d3c739045d8c57805d74c0b8264f87ba394c87e4f2f9bca3c9a100cbe81f6b186c6832fc6eac976a54731eb0aa5cde7cfeabd5b702ad606ab956c038ae3b67cfab6e11534b9706a5d338d43a5c42c912f69ab4d4a99ec437946a3650f142b6ba06d7d75980062d8ca8a0d02a2f7016f90ad91ceabfd2c2ddad2536d3c23b9b52e84316739bbc803a238e75e4bd91f22b4242c8105c1714b64163ff6a51080db252611bd9da2870953a0b1db32293620d6ceeae65b50b60fd1895c5259795e4c3261ecd40093d1340de6425aa769248f903facbe5b0ca9a566685010e1f6b6bdc37419fe45c8053239debcf819b670fe463465275de5255766f5375c157fb2bd3ba605799503cfaf1f2933245a97754c479f753010def3ce350607e74747f6119a179d9a2de831ac3696e75af64fd3231e043f1b99bbaaae7ffc0734b0d0d13e76f89865f193b0684cef22ebd5c26f99f832a061ce0877547167c3b699c7ff83936d1802bb587dba3a40337ad19d4583fddaecc743bd00bf17683e7ec993f9903fbf4201d5ad8e734f5f440f44b0d40b824e65ad328f5531bc8c2443c0e8e0725a37c4baf92b6aa02cb710cfc9746c653c410ab83c710ed4396609fbb8909020be63bf507fecdf95bcd8f4bf48c682d9e15bbd7ecc179d18023dc4e373824c4bf900d15cb86040f1e9a52ea6b99752f6eda73003bfb6d1458a75efd82b21c38c48f47296276bceac14eb480d44e660a69b8bb72f833be8b0cea9cccb551845b2dc40f6c27396da210ed0cd5f1df07a989181e7244f917c15a0395b022356ade00afc7cd36e72f8cf1292a2e1483d451839c6b34b821315c8821d9bb99b248edb981fe8497c9681d01fcb3318919ea273a9e6fedb0f6ea5b58cf4d5abe8e860373356a2ae1d3625939731e614bba54731c2097734c11a175a123b9600b776aef7ddf9cecfab64bb64a1873a82368ab8cdaa559903849420315095bd0bfc27ac8c4684124b6e22b7514b92b983e05431f38ac5d8b999cddddb0e94e4614f8d6b77a74043863fd41e2c899535b99dad11e39ca2ae5096fc76c187200565d127ef799fe714fefcd45c4538900018210f6bc34888fa755f8bfad3868e2f5fba6bc5ec40b9524a4bf7b64d46a9b22d6ac9067e4b82cff70e6d97e987adaf38f21853a0882707d8d4690dc6aaff5036888cb2922b23b278679ec29992aa90b81b842a6c4f61eb82dc2ccb0367c446fea448900080299d89546e1661b76b426e1da59dd198754c535f8abb2b49a114fd5b5c5882cc98d04f1932a812a6d51b70f20060ebbf2ffa3b6f2efc3b83bd11ffb32027a5bdf98e63f4d0f1136a754a9977f3fb9ad3e1e805dc1922bf491dc52983a24ec5d4662cb24b357685c5f709ff67f8bebd9ecc2f6a2dc635d757b81c9fa8a43bf3c72c67dc16fba6b63bbba5fe9220eb6fb6366a98ac540a4b7b5c5c592df7d8e1d6e07ddd0c36f8e5d77695c37ba77ce54fef780acd00518b2883cd5b0a35b0c7df49030d87e9ffacd75fd7bf8ee100339a96fae4033ea669c3309df59d9fa24086d1da10ecd65d4ddc345de7ae5def5925bfb6178a96baa0ff83e7adfa978b43a9bab1d01a842390146c3b6a930bd74aca13bcd2979432add0663f2e7fe50b36bb142a98fdb0f750a157bc470f7c94240fc1680f5931c62dd4e4c6499a6c14a58ed1d8d09857035919ad2f0f62e5f2c9300cd382f32669be49792f301212a288fb71f973a653250837689f16e9765facc6f9b6f453fd9ca65c2b253663b48e7d414824c2d27ffcbc6782efb8e9567f8ee16fb7e43f0f3ddffca32d47cd0c8bf154f332200179c00de41d2826b476ee0e95e889434d9a46e430446e3e12ec87d86897fd801cf1ab64d0301e8dcd2730503820928b489fd907faea625e4a9ed6bf871764a8d6e25fc7595025466f26c0db748b885c53c5e98e20d79c80530983d6463fd19f913bdb336264f707ef434224c721fc0016f67928db07ff4b3de0c4b1007b4e897dcdabd32033d0a1b8da2eb243979663820bac229ba11f6022f51fe82d34bd52f18cbbc97dab5736fb4424330d5936a8ea181839899017d12b6548880082cf23f1a7b64c0d84c7f7a6f4c2ca023315ff16f018ba5256778bc9ef0f28423065633cb922382e5fa34a8ce20120fea71959f931644b43392e99eb04810fa1e9b2292d762b6a918c7eb900a58bcf708a08d99527e864b634bc01a589ba371bb16fa9f59b776bb5adbc5f4021704bede7ff3885354379c2a7ddf0af7e9ff7b1456cf3ac71951153989420280abfe86865d1b1293c3a2fc1964b2ec7902dc8ee0001159c5ce798f4ebbaa1a748679ae3b53b4a5405c593ee25e3436dc09da930c9ec64487471cc10066b6e85f93b09a08f58508cedf95a65e90b4122eab3e77e234fb66be2f7d71ea322b3f92b54964513cf3d4d37d3b45d4d20ea4db071306b59f8937b670e3ae7808eab5a8c8b2ac5074552d00966ffd7f566849f0f62535620e3348328a6921247b49bfbf2fd049b2b3bd2e1597535a3bba57f061402998fd5dce3c848ed7d64ab2c38908ede47d57896d8b726aeee8389ceebbf830a43a03dfd1c120cafba767183acffb76127fb1b81f7c816cba69876fc048ce5aa5c7179470feebee25329e073bf523fad7a17c83b58466552246053db6361b61f4eb8dbba11df05adbb81cb3bf1fa936ad89d964c964dc5cd9eda988b8a6796a0b61b0c8493a7ac81f84ee3a8629f9c6e013c455e6bce7ff316a456ecd513dee824e77e2d47f02c52fee759f79ad7ee72e793b1b380be5389d97bee1f07216368a440de22ec4f1415b08cc534a389330f572542535dc104eba59105c2b6e933575bc691de5a31b0998a110d379e953c3ac0193371e214fedbd2df4b4f804e43836888fabbc5c3e3f72255cf263f06684e93a290bb9d7ebcdd118e922bf76083c4b640d727b9da1dc177328aba16198396494755e8c4627eae4f05fd2524268b826f7c5c12074bd7529a6c4d24cc6bbc236264f5f864fab34854b891180d732ae9734bc6514231bfbec9e036244addcf774b057596524ae434b6f95309e2dd264cace43b8c8adf5f438dde0f43086953f35524fcc5fdf1811dd19f80576e2dae483c0db7c6f27d14aef554a438af16a377267fa8f449d4b40392f84cb0218e51e49dad7f856ddaf4a24e2cef85e215df427004fd4dc6a4104eda60d16ddb6279d834eafc70ef526592e8556caac4e5de92a40c438fac02add99f99559a3a3b1fa4e80ec1380aa3ba855122adc94da1c250e05f7970cdedb430ac57ffbe80335440652040953ae1e6872152d8a7ca31472881d10b4cf1dcb9df0db19b4b7957504793b6fc7f53e12bea7b76f88af3a83d1c97887a91f1fab49c8afd1675d2f03889ce9eaf769c69be199f02358c2c68a50b25ba3946ae286f67f5e0c55931297a8745414701ed559e7f1edfa7714965288e5aa9754f2147487b47ba5822dd641ed5254a6932f1c13a6f6969e15bae47753b4cd52fda4524b39beadaca6eb871efd93e4b795be697a726c19a353fa5e52ac3cc4cc367e466e6f4cea761c4b6017f2d1833c42115337f06169e5ab5ba849a38fb3c75a063bbbd62842e6edb2cb244b2874fc11c0d9f007697be85e7fdc09a8d3d7946be3ee7111f20c06478ab7697852df0147015f282859ee68b9efe173ce53f4d853d958d089913ac0a0169a81db51a643b3a52c85c5399eea1182e8cb54471cccf479c15fc0d96d2573d460609b2ea7ffd19f6100cf8b10c399b6a3f217a02af2414c699a2c195af11c2e45795dbe1780d01f350300fd100ec58c167aa39d68f9943e545fc00baeead31405471ed9989ac33388019b9d9408925118cb0dc980134cd739d6cd3f8a6d0d18af06505d06bd1d05d62c7f395b2002584fed395d6bbfbc13be7d936d11220c28cd44594948591472f0a0f172ae53e296eb6b6ac92dbf1edd1ac57ab2975b620724057f9a0b1737f71df06a1aafd6fb52e3a4fe13bb00f8bf40730be17bbc8e65d8e7657ec04aedd65c604992b5918519e422a29ed613d77895b8b0961f975ee089bfa9d39be388623443c4009fcc3d0e8634a7b10a0b50bbc719665c41d5d62bc5060a918f7c81cd9c457e6aa4d5c02d3b8c36d3138bbccc816360ba42212b034088d5dc24883ab87602d7cc6584655ba788a9919a1c8d9677f90d5824c50c210748e67214295b09512ae60074a4311f7bf0ee1d2f2b5ddbf73baa8ee3e93e17868af0afefb183888271fc9e36a6920f4665c0a9a8bdb487751a8d4134e96a462c8f19161dcff8bfde3e5688e32bd3fd1f3837fe3e4d3f76cbff9ed95390c0492b562812f7ad5bd845865b42ddae79c4fba6c05a32d6458a216522784010a9a4464802df9351807568192375cc6f899c475d1ecd7398dccaa65b9e1071eaf209d5d5ed721eaf054126fb7aa76ff47e35022ccedbe5bc9c3fad1234c2d8ff75a1342252b28a1ae0ea64b62a041dddcae0930ef429e8601fb749132942169151da41adaa02f29d14f23480d3b3e1756979556622f1d3f082aa6d9e53c8354d79546817ff2cdb1cdff971f1149a4d87fa1f72511ebcf98d962b71db097ee0ae30e829de68dee0b2f2e97ab43db7076bb3a0405ea72205e08ae6811edb1dbf56c985124ab9059588ed34cb2365476b1dd6023880f457f9ee9b17baee6d9060ef62cd28344eb5179395b26c1628e38a3915f72de6938a9e8c78e010a33f9452c47f156a915fe1a10afb0e394e48796ed03a792c6445f9f376bbec7b15dbf55c1966d09fae178461ff0d93bc6a3e6da66bf3c9a17804627c83436cfc3818774c9aadaf8bc3442c36c3edaf644158bfc3249eceb8a1b74fe4b285832b862418df929b597aa1e68cded8690deffc07d3dab7d464eaffeacd1addc49d457dbd06a7c4a627bfd5cf393cbf717aa405039d08270da4f1794b3f901f3a01f81df27148c741a9a5284af2a41f259ac7ba80963a882e1ea33212056f5361fb6e2df41a17f158f6a4f0d23e8eaccad15bb9efa95b00612eea277d6f849a0fd951f51944aec5e14289e0360bf5edf4887f8cc3df9c8687ad3d7110ea8ea431b3c0a4e6eb86d8e58afb14ee0f8cb98267176c2840602be3e4bd987d1fcd0e74090034dd6095419ec30d643e5544be62bb1c2ed79da0229d50cb5e1462c32b7b073d7065f09176724d2f23e416c6ff42a8347de5104b643102b6c84215e9f50fe25cccb3a1bde35f954eee80444a51d85df14508c6553fe2c87413752163c60ab58dd5a74e75d249601a0623eaeaaf67e8de02d4eb7bfe4332a55a3d19e2bd0d2b111510a7b2e691c5349253c03b3a43f61e2d781546b64b51514d8bd89592560ae1c9691346c8a721edf350d3633d231ea4901ca39577770e06fe50daf16c6a8b027d537a34b3dc6bae0cc6dca218363b3e4507ee3cee396b95352a81a0a32142a3753884fb6a054edaa58da2f874847cf26d4ddc09d1aaee3da1b303b3f829493c4c59407e8e227adf7e110a4b397e520d79bad0f172407650ff7807c0fada56f9880be0caf366b3dc52053294ca73c8fc34c27a4c8662dbc001993bdff36b84186cbefc10c88e7c7eef3191d34c5b3a7437ea6ec9c77e02764e90f54cd30a6ff347d345423935ce21580b66c0e1157a0f6f26181dbc492aad8536c60eaf1d3c37e447487fcffa995ed2975bfeb8e8df0f669e68fb24d1c8a2ebdf6fe221f0b025cb190219713613551b0991b84b6e8e83a220b22c4b4f0054ace06ad4742e18eb69422faa7de3d99394ec9bd464c1831b4bd4df5ed0e18a53f06f9ae94c41d300dd0427568e7c5ebee4a8657b8a4596907bd61914182521abc36bce6275b5b17bef9b6f88cd3373cb61b25b1af89577d6f866f955dac390cf1b17de06fcac8e283e1963960a18159f2a116e7c1b3d84b7f359c9a7201597de0fc093a0c7e4eeb6796c91b6cf6f8117ca9a55fa2f13309fa899f2ab22d04af11d95645fb9d74d9372829275299ec342cc283d01df97199df6beaeede0a60694786f08d9e41d4ec3c62dbd8dc4b7b65ab293efda35abc6751066d907fa20199df505ededa3bb2d8dd77f805049737ba052f0e3820e6057ef2ccfd136ec943cee8f38380ece3e27b39f51e3fdb6d75b0476f1c3d1fe1c16bfa160b5d7e20d75825a8ce987818245e8d1cea5f9e514872e5953cc041c3a4743749d0bd6d0dd97290d09a6187db76b27426747b3657b6d5bb575c32a0d05666e4d73db557a8c9bd3a5c559448580cd5db8616f289db18664cc5109fcb566400e79c0141ccf6663da126a0e2658cc5e3be77ddc316707710f7f66fe72d85630ffb9096304722262a05ed83ef14fbdeb17153f80c4457222950baa06f0a97b9f05d280297020ed9783d58c5df72e111eb6ae6f90a5155463260f0defb112992b119a12dd201e632df3db826bbf2615c10f3988202f432fbc02ec429ee43e8ccb9b12ea42c9621b7f22a4fcadec7ae717168aca42befad2114971d99e89ec5c832b113183531fcefa91a51cc715467729e24596c4bcb945ef4fb25dbd9f6429b0f8363337fbde48f166db9ee5e4bfd6f84e2723fa9e424954e13b0d9a8055143573e4080cec8d102b26ed0b3f959466a47e169bb9fbbde03705c4a6f41a1d948e547bd2abd8fb77cbc3b5c277787fa63bcd3d6345c154901d83644a9ecb9dfd6d8adc1469ee28c323862efe645830f2b08d28842234113f9388a3093d875b50d49b833af27d38d322ed8b455c99516673035380ed3979d58df516d12f5e419101def8061f61108678a2d4e03ff556da93bb30c00f7fa962df2dde077702631d51345ea6a6b7f69fedf5ba8f76812ba7157b32fc3b074231a090865e74a6589fbff9c03b5f414cc3bc03919d13a50a6debc50f26d2e52030d78c74239968cbaf67d533ca16203d8e0f61e1cb7249e040170413dcf0f6a9126d6a2a43dbdf670c5e3fcc29652ab25533750d5550b96db320ca2bf092b0e6b8589752b12b9a7e93d85ee3f6c210d49d20d1da017e9ac4e1da8c4ceb150f1215c656680fa3715459d0168a1b418c627c685115245ba30ed42a80fda7140107f86c0b422c837ce48af2dece464db330610d021b544903560c0718679e361d8a5d628f790c0334d27cfe1088bee19c62a0c2bd0a715eab5b3ea1a69c58589f79f974658f71d103ac8e6f2f636e644a1795c07a85ba9c6d7e5b3c48d4dfb7c185bae5619c23e8aa1aeae36defcd2cb7f19f26884222493d7629aad91e20167be563b7e90b65b6413e6d67836262241734e3feb16a5688a0d63860b39b580c6c15b37e2e1447334da274d17bf6e62fb6e0fad1da392142f4481d82090207e8eb8abd544858d384fbbd69de875959d74a9b969ba664b92adc031a3c1696e25b16ee3ad4946e9efc4458d3f12f81dff6530843a0c14c06a9ea87894f613cf68e167045e5a63c7df90dd594c3c04b26510f777ae29e3d7eee942f1dc3227cee60489bae7da67ad6317e0879cd1fc374d560d4f47d467d82772d51caaf8bc66d68ca4296adb33602c3ce1b8f1c30326f2ebe91816e4daa396692f69f5500ad8d341587029200d971bba6ce02e3f14a71cf198dea0f5d366330d48a452c36c6578919c6eff7d8119010e73041dea40efa777b7e9b8da72332a9c3eb6b46b48868823c71103ef5b37e28b9839172a39e576c1b8d78d748a05b295979f6de04346895897610e28663afb2c06d5b29fc54a2399283468489314794741400ab4de9f8fd830cce9d8d8f42fff11c70aacdd188767315d36479773efcfa345871c17d6dcf58ce0658c7b92dc509cbe0f9dbb094e8c7dd3ffdb246bed386da2b34a3d77c42822f5fe7a74da53ef9362ee9e31fb3d7e3d12d9e811c646e2a534d2b0419956c8a20e82938f62f9c8ebee6386df71ac5b4075467b497849f3328072e03d9338e45d5ce85aa3c519949c02203ba3363c8d170db765177b20a56b6d450109dc0d600dab47ce5dc6f1b98f1b1e643cf2e5b4b1d768e6941d46b5dd890ebc32ec9a93950fc4d865056e2c84e315ddfbfd00df22c92bd095a02d6f89104321560133d57e86a98292bda47517600b198684444ec063154e9bceef7eb83cca8eabb9ceebd93383d795eed44509ea21a6251f7fa00ec24c1b5695070dc2bc9b0cca282a89fe760508420161c0f8a0b77f299852758637399382bde9861e7a99116a7595e61afb38be5b123d3f4f14d6d0307e797a69810dfeb8cf6dacf4080ebf9fd761f64240a810538e6732190f865e49e036c01a4932849bf94a010feb696ba93f98a304a6ed8f0f6db77842d428ef7236a57ad4f9cd89e4af97ceb0d9b8b0ae47653ee7cfa3d3f03a0b9f97c03fb9c10426c4b7593cfcbc924f5a000bb1893b7608d6d1b21ca1b3b0a9b892e5b8c9eaeb7e16cbd25f3de65bdfb26bffdd6d0f50a2edd7dd42a648adb8af5baeaabe6427a1a81a814756ed599652735e288e28156a284901d1395fdd21c0b3814538314b3918fab78357b5386906e45a3a0fda7f84b4c5d8a516c2fb83fc4a26ba5e31fb045ec36cef1ea80a225c2232f9b1bd3a73c909bd4f20d3420fd554f9c9b7c98d307306e983f6ba8bf9ded97a81be59b784c0ac9d68e07eb0a3f2566a631472f6f5e3208d0ca21dd7aa079ab70c8bd90706d75fd60071260278b3699af9cb5b77c91e77364da96e8cbebe27d4ac2e6b5cd89794805c3aea6d3de78bd6034e4fbaaea6b36b862e93a51099f7013720dcbd1502588a1f28263cf541aa2e71b00308917fa3ac114f1cfc03b9bbf5984253a2b183aa8b534a83eb143b3890e4bb3bf5fafe70e599c2d8919fd2f4cd8cb472003c4874aebd81165f3be1ce0cff0d0390c68b3b838a70b645ee36e30fb05ceed3157e5ad9286d23b696454c7fd57b9a86c611091e50c58a21348ee3cfb8ed2a396c928bb6be22a7fb2399abea2626647d50dbeb5034693c88a0a1714b4e8b1a745813ff0be2e98e47ef838883f20d3a9df8f5eb04c46fc6aa1e771b4b5592764099524e23c6dbae41e310a0c1498405688da21ed8fe53e23bce1ead726d858a0705f69547df282da1c8d68046ad7f53c5a927a66f310dbd8dfb49a07ba9caa27f22896369d1e0727f93987ae5664f3b42b0a7c001e844c5bec16e60e51f75db8ec66d237c85e0e6cf2ec126e4a0a454272b70b25f45919731436b37c6a3075eaf9f5683499ce0257cd6aab41c0ae2444adacad4c43065911a10a543cede393d846b2846608b34a5c68fc6b2f3cf43055e70a75d4da363a8b580d3cda493ef6f8cccac264d4cfb296ccf49e4eb188a3d0d2ff14add631de280dc5405e500e9362488a9ac31f1adebdb70874ff14c3360acb80741e782ccf1fbc79f1fde846936fdf9c648d30adfc6f283dc010ba623e08444e60eb1ee82f97ce51e45cf0c2628ca2633551a3893f96155e3a489623210a962fd1d369ace9801234ee3519d1849c9ddb4e19f5e72acd876b068127fdcc732f56d33a67b30656153384a9669973d5bd0a5e593ffbb71df986a875bff4394cab5ecdfc35032cb68f1ea26b60b4c123071f42b81e756535a5882e23aeba5a2ce05a183e70a296377224e0b128445a3cd61b550cae2cb0b5c7050fe71683c8bf28cd350d663ddc39443c98802e216496d790127dbdbef99a67a13d0988762380fb17e3e1818e567024242819ac24078d36643d8976fb950177bb77a44c4655998a079c5943985ab7e6410159db07e8ba363eebf30364c12e3c703444e12be0852be9648071a7eba7f65480d7c23d8570e9c76cbf1d58c499f05c39420f19a13258e8e19817f66322ad65d1bc0a2a9267079babb284f79e91dc0108fd67645348a54ce8f2eb90bab556d843df546c558cbba6aa12f46aca4ad6a3485500511fc7594815343639e48e4fe13f5f3b6cfb607f4a284d225605b3384a4015eb3b2b7cd775121e70eb0461de56eeb245c7cebcb7aef4427635b2f54cc072792f1aff8b01d436d1055405a18d57f3dd1c1bf72afca986781c212603c4bab7d828f8136c0a2860d43f661eb78b33c3b5a229c60a3ccb39f3f2f6256b07d9eaa4baa79bc272f3d5ff334072b24c9600218f7a3e1074f71b40d043d184eccde57ef04e3b72b8093d03259208d83a68a3f1e582b0d605a89c73396b2ea95359afcba373f3ec539b2877b44a8ec52620b138b2806e45627e8341753773f0179ed043e53b5a7b2c90568eb238c54b596c229597490bb0f47b296e7726f5bc05ab496e2c1e1f8441896799e86a9355c66173dfe0bf3b90da3f7eeeee06f708e11071a2aace1da3bf3c17bf133bca53f382f15853fbda0c2d6b16ae844251ce4ef1e8f8c0fc50312a00a896ac0b21fcd9f39ae05a59cf464d9916ccab251072ee4493ce96c2739c494989c8cd78df8de7678ae0041633cb4ef3fa39fef15bfaafcf5998627bf00b4ea245ca6a25a273b844684ba59eedeaedad70344bca9e9001aa2f67335c4864d60e56f63c5066f8fe3bcb96de41b991672f4214fb4cfea20f9ef2225b15884a7d5b354ec8fe4e995f79c94cde31b0f25ee55e08d88b099f1541573e478159b9fb9aca01cb3513b457445cec2153f7fd47641b9ba040a7497b9016f8e62dec6bd32366426943bb29c798d34905707ac6cb77058547dd2d0fe9507865cd9b0c849993d5488f15f236ed6a145638039b37df9fee3164f58b18b420832d6d4f9146291a11607d254398412b481ffdccc5bda26cf8d29f968cd67c8d75daa1c812cc09ada5760e1dbeea64e646c3c82d82a23d2d2a270f985953640bde84359074852275a67ed28d043fa3cf147e7460486373ed1b8746544fd0021a9d95ebcd8f28a58f0ed999731c838f4501013f7e28e6cb72878c51ef0108b6ed0037c53225a6e8fd71aa313d037c64261ff22a9b95f0eefa5ba96556a909bcbbe91c13c900d3db142eea8f96e7a68d09591abdec674824da41f8185c4c96ed1ed3dfefc0598e8090cff4e9368244c7e3871919d0880c5339a2f5c9b3d19976c9ab1f54769e6febf8ba093e75c070a7da01063ffff62f30d9dcc45b98a5729b2bc74d1c09196737a6d91d47caea0a36a3139fd121c1baca99240804f3819289d3a7714d8fffdc5f2c9bd981b57e4a15c9d7175ce2b2f52c11da5bf6a71268d24977c390bfd75fee815cd6dcc7a0f54d2ead1ddbc1ebf10062705f5855bd3ec30e5b9bb5a85837af5675406740259634b802e5742004542b784350aab238c2396ad5f13924f376e981fa2899be2f9ebbfc00c27a7dc0057986fae3d881fd98246620e03aac58c2fe26557f733d64e36b51d0695ceb76950ce15cb729bd325141bc41058fd421477fc54a8d9ae662fb3adeaa9f5f61ef14eb2619566acaf63e359e185a6da0673594d0d8b7e65b98a486b9170df2cec4554c08c8e9ecdbafd90d80b418ee8134e47e29063f3e2dc3557b3c2a12e50b23376661935a272c8ad591ac10476ef02f040e532e579b9e08bd2d2e15ed525d9c9025d5762dcd5312aaeaadd9b7715ef9e92730ce8382bd53ed8fdb468f0a4f7db3b023f7c89c974ed977b7aee4d9f7cf532dbe841aebd3337c6b48e156f56eeba03d2accca4a04b6a98df0d00322c1b4701f0182f8f0819f612aa41d05f6db1a85bc8b3918b7085501c938efb676d80e82a6a423cfcd494eeae5a412d2258e40dccdcd20932f990603582e86efee75b6bebe8c0febbae0e4033deff5d5fbe37cf0d6afb3ccf1b14631200d700dda832f44e83c0563b479f03728263cd58a8628926f0f2f0f34d640ed9cb7f36138d17d615e804c328709e10baa7e32083e50620bdc1ff1a77159a016334589b49060449c5992d79c761b982462b034e488eb20291124c3619f6e10674f5e67eebe4ad70bad62bcf3308223ff5ef2922e16f6f8abbe1ea5392a3b329c75343c424fb7be52404248cd80e28c5492cac3ec75bd3fa276659b192df378be359b5bfae2be99a9e9c48371717dfab7973d923e8fcfa965820fb5fba4c586b4f08428cac3be384beace0376d3fdaea805f47113ea8adfbfafff92443818ee699767eb69233cf7fe1f6b3eccb3bc294b92cc047cba1be629d9531404b13ce1253150c250af8bedce36e94c614025006437a8c01b5a41abdda0f90da3f781c22184dc2d9f40e736a0d328ecc398899ba91cda63813544f67d197e13fe8867ec28bb200a3f7c02ef0bc8a4a9d0554b4a4a97e74db9eb39d0464ec9bfac93319734f754f14e13824d0bbf94abca80f6e388c4886e039f1a4fc15fbe37043342bb9601ff280b0d8f5303af7c31c4285106fbe8c8184f8e9cb67d5942fbd6f12d3761eafaffc459d4336d94c5eb8540f6fbb83a9f61fc62d8cfca8841a58c7ba4bac0943730f9b24de92569d5cbdad49174e116872fe54d4ce60824a0c6bf46c1223661f4480112edd4349b72c12ed2159b095eff59e047d90331a3c8c1b6a4fca9fc318e52b96a53114c2dd83f97cd26c5366f013ac4691b8a8d9d498c002c9983641c84f007332a658c72dbca43f2bef7b10e12c569bd38ecc917a26f3c4ff2ba4b2e6ce5d2e910113b00d74909c3aa5bc12b9e0fab1f05581de95bbe1eb64e1b446915538aa88824e1ac11ec6786dd203eaa395c8ff2d20d988b64d468279b03973df3b404418a2a0bf13f15d18d6fa77446f792a4013ddb8f2bd8bec0f7199b5d1d458c7c024089b7fd1a4559247efb257cb4f04f3c8e341a2c4</script>
  <div class="hbe hbe-content">
    <div class="hbe hbe-input hbe-input-default">
      <input class="hbe hbe-input-field hbe-input-field-default" type="password" id="hbePass">
      <label class="hbe hbe-input-label hbe-input-label-default" for="hbePass">
        <span class="hbe hbe-input-label-content hbe-input-label-content-default">Hey, password is required here.</span>
      </label>
    </div>
  </div>
</div>
<script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">
    </div>

    
    
    

      <footer class="post-footer">
          <div class="post-tags">
              <a href="/tags/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/" rel="tag"># 设计模式</a>
          </div>

        


        
    <div class="post-nav">
      <div class="post-nav-item">
    <a href="/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/Design%20Pattern/01.%E5%A6%82%E4%BD%95%E8%AF%84%E5%88%A4%E4%BB%A3%E7%A0%81%E8%B4%A8%E9%87%8F%E7%9A%84%E9%AB%98%E4%BD%8E/" rel="prev" title="01.如何评判代码质量的高低">
      <i class="fa fa-chevron-left"></i> 01.如何评判代码质量的高低
    </a></div>
      <div class="post-nav-item">
    <a href="/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/Design%20Pattern/04.%E8%AE%BE%E8%AE%A1%E5%8E%9F%E5%88%99/" rel="next" title="04.设计原则">
      04.设计原则 <i class="fa fa-chevron-right"></i>
    </a></div>
    </div>
      </footer>
    
  </article>
  
  
  



          </div>
          

<script>
  window.addEventListener('tabs:register', () => {
    let { activeClass } = CONFIG.comments;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <p class="site-author-name" itemprop="name">zhengyidi</p>
  <div class="site-description" itemprop="description"></div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/archives/">
        
          <span class="site-state-item-count">39</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
      <div class="site-state-item site-state-categories">
            <a href="/categories/">
          
        <span class="site-state-item-count">5</span>
        <span class="site-state-item-name">分类</span></a>
      </div>
      <div class="site-state-item site-state-tags">
            <a href="/tags/">
          
        <span class="site-state-item-count">7</span>
        <span class="site-state-item-name">标签</span></a>
      </div>
  </nav>
</div>
  <div class="links-of-author motion-element">
      <span class="links-of-author-item">
        <a href="https://github.com/zhengyidi" title="GitHub → https:&#x2F;&#x2F;github.com&#x2F;zhengyidi" rel="noopener" target="_blank"><i class="fa fa-fw fa-github"></i>GitHub</a>
      </span>
      <span class="links-of-author-item">
        <a href="mailto:zhengyidi1357@gmail.com" title="Contact Me → mailto:zhengyidi1357@gmail.com" rel="noopener" target="_blank"><i class="fa fa-fw fa-envelope"></i>Contact Me</a>
      </span>
  </div>



      </div>
        <div class="back-to-top motion-element">
          <i class="fa fa-arrow-up"></i>
          <span>0%</span>
        </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

        

<div class="copyright">
  
  &copy; 
  <span itemprop="copyrightYear">2021</span>
  <span class="with-love">
    <i class="fa fa-user"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">zhengyidi</span>
</div>

        








      </div>
    </footer>
  </div>

  
  <script src="/lib/anime.min.js"></script>
  <script src="//cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js"></script>
  <script src="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.js"></script>
  <script src="/lib/velocity/velocity.min.js"></script>
  <script src="/lib/velocity/velocity.ui.min.js"></script>

<script src="/js/utils.js"></script>

<script src="/js/motion.js"></script>


<script src="/js/schemes/pisces.js"></script>


<script src="/js/next-boot.js"></script>




  




  
<script src="/js/local-search.js"></script>













  

  

</body>
</html>
<!-- 页面点击小红心 -->
<!-- <script type="text/javascript" src="/js/love.js"></script> -->
<!-- 鼠标悬浮 -->
<script type="text/javascript" src="/js/mouse-float.js"></script>

<!-- 鼠标点击爆炸效果 -->
<canvas class="fireworks" style="position: fixed;left: 0;top: 0;z-index: 1; pointer-events: none;" ></canvas> 
<script type="text/javascript" src="/js/fireworks/anime.min.js"></script> 
<script type="text/javascript" src="/js/fireworks/fireworks.js"></script>
